public byte[] Serialize()
{
int index = 0;
byte[] serializeBuffer = new byte[this.Size()];
serializeBuffer[index++] = this.RopId;
serializeBuffer[index++] = this.LogonId;
serializeBuffer[index++] = this.InputHandleIndex;
if (this.FolderId.Size() > 0)
{
Array.Copy(this.FolderId.Serialize(), 0, serializeBuffer, index, this.FolderId.Size());
index += this.FolderId.Size();
}
serializeBuffer[index++] = this.HasFinished;
Array.Copy(BitConverter.GetBytes((uint)this.DataOffset), 0, serializeBuffer, index, sizeof(uint));
index += sizeof(uint);
Array.Copy(BitConverter.GetBytes((ushort)this.DataSize), 0, serializeBuffer, index, sizeof(ushort));
index += sizeof(ushort);
if (this.DataSize > 0)
{
Array.Copy(this.Data, 0, serializeBuffer, index, this.DataSize);
index += this.DataSize;
}
if (this.DataOffset == 0)
{
if (this.ReplGuid != null)
{
// ReplGuid require 16 bytes.
Array.Copy(this.ReplGuid, 0, serializeBuffer, index, 16);
index += 16;
}
}
return serializeBuffer;
}