private TS_VIRTUALCHANNEL_CAPABILITYSET ParseCapsTypeVirtualChannel(byte[] data)
{
TS_VIRTUALCHANNEL_CAPABILITYSET set = RdpbcgrUtility.ToStruct<TS_VIRTUALCHANNEL_CAPABILITYSET>(data);
// VCChunkSize is optional
// (RdpbcgrUtility.ToStruct() will provide it with an invalid value when it's absent)
if (data.Length + Marshal.SizeOf(set.VCChunkSize) == Marshal.SizeOf(set))
{
// VCChunckSize is absent, correct its value to default 0
set.VCChunkSize = 0;
}
else
{
// Check if data length is consistent with the decoded struct length
VerifyDataLength(data.Length, Marshal.SizeOf(set), ConstValue.ERROR_MESSAGE_DATA_LENGTH_INCONSISTENT);
}
return set;
}