The Status Info PDU is sent by the server to update the client with status information. This PDU is only sent to clients that have indicated that they are capable of status updates using the RNS_UD_CS_SUPPORT_STATUSINFO_PDU flag in the Client Core Data (section 2.2.1.3.2).
Inheritance: RdpbcgrServerPdu
        /// <summary>
        /// Decode Server Status Info PDU
        /// </summary>
        /// <param name="data">data to be parsed</param>
        /// <param name="decryptedUserData">decrypted user data</param>
        /// <param name="type">security header type</param>
        /// <returns>decoded Server Status Info PDU</returns>
        public StackPacket DecodeStatusInfoPDU(
            byte[] data,
            byte[] decryptedUserData,
            SecurityHeaderType type)
        {
            Server_Status_Info_Pdu pdu = new Server_Status_Info_Pdu();

            // data index
            int dataIndex = 0;

            // StatusInfoPDU: commonHeader
            pdu.commonHeader = ParseMcsCommonHeader(data, ref dataIndex, type);

            // user data index
            int userDataIndex = 0;

            // StatusInfoPDU: shareDataHeader
            pdu.shareDataHeader = ParseTsShareDataHeader(decryptedUserData, ref userDataIndex);

            // StatusInfoPDU: statusCode
            pdu.statusCode = (StatusCode_Values)ParseUInt32(decryptedUserData, ref userDataIndex, false);

            // Check if data length exceeded expectation
            VerifyDataLength(decryptedUserData.Length, userDataIndex, ConstValue.ERROR_MESSAGE_DATA_LENGTH_EXCEEDED);
            return pdu;
        }
Exemplo n.º 2
0
        public override StackPacket Clone()
        {
            Server_Status_Info_Pdu cloneStatusInfoPdu = new Server_Status_Info_Pdu();
            cloneStatusInfoPdu.commonHeader = commonHeader.Clone();
            cloneStatusInfoPdu.shareDataHeader = shareDataHeader;
            cloneStatusInfoPdu.statusCode = statusCode;

            return cloneStatusInfoPdu;
        }