/// <summary> /// Parse CHANNEL_PDU_HEADER /// (parser index is updated according to parsed length) /// </summary> /// <param name="data">data to be parsed</param> /// <param name="currentIndex">current parser index</param> /// <returns>CHANNEL_PDU_HEADER</returns> CHANNEL_PDU_HEADER ParseChannelPduHeader(byte[] data, ref int currentIndex) { CHANNEL_PDU_HEADER header = new CHANNEL_PDU_HEADER(); // CHANNEL_PDU_HEADER: length header.length = ParseUInt32(data, ref currentIndex, false); // CHANNEL_PDU_HEADER: flags header.flags = (CHANNEL_PDU_HEADER_flags_Values)ParseUInt32(data, ref currentIndex, false); return header; }
/// <summary> /// Send static virtual channel data /// </summary> /// <param name="channelId">Channel ID</param> /// <param name="channelPduHeader">Channel PDU Header</param> /// <param name="SVCData"></param> public void SendPacket(UInt16 channelId, CHANNEL_PDU_HEADER channelPduHeader, byte[] SVCData) { Virtual_Channel_RAW_Server_Pdu rawPdu = new Virtual_Channel_RAW_Server_Pdu(context); rawPdu.channelPduHeader = channelPduHeader; rawPdu.virtualChannelData = SVCData; RdpbcgrUtility.FillCommonHeader(ref rawPdu.commonHeader, TS_SECURITY_HEADER_flags_Values.SEC_IGNORE_SEQNO | TS_SECURITY_HEADER_flags_Values.SEC_RESET_SEQNO, context, channelId); context.Server.SendPdu(context, rawPdu); }