Microsoft.Protocols.TestTools.StackSdk.RemoteDesktop.Rdpbcgr.RdpbcgrDecoder.SwitchDecodeMcsDataPDU C# (CSharp) Method

SwitchDecodeMcsDataPDU() private method

Switch Decode MCS Data PDU
private SwitchDecodeMcsDataPDU ( byte data, byte decryptedUserData, SecurityHeaderType securityHeaderType ) : StackPacket
data byte data to be parsed
decryptedUserData byte decrypted user data
securityHeaderType SecurityHeaderType security header type
return StackPacket
        private StackPacket SwitchDecodeMcsDataPDU(
            byte[] data,
            byte[] decryptedUserData,
            SecurityHeaderType securityHeaderType)
        {
            // Parser index
            int currentIndex = 0;

            // Share data header
            TS_SHAREDATAHEADER dataHeader = ParseTsShareDataHeader(decryptedUserData, ref currentIndex);

            // Switch decoder by pduType2
            StackPacket pdu = null;
            switch (dataHeader.pduType2)
            {
                // Synchronize PDU
                case pduType2_Values.PDUTYPE2_SYNCHRONIZE:
                    pdu = DecodeSynchronizePDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Control PDU
                case pduType2_Values.PDUTYPE2_CONTROL:
                    pdu = DecodeControlPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Font Map PDU
                case pduType2_Values.PDUTYPE2_FONTMAP:
                    pdu = DecodeFontMapPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Shutdown-Denied PDU
                case pduType2_Values.PDUTYPE2_SHUTDOWN_DENIED:
                    pdu = DecodeShutdownRequestDeniedPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Set Error Info PDU
                case pduType2_Values.PDUTYPE2_SET_ERROR_INFO_PDU:
                    pdu = DecodeSetErrorInfoPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Save Session Info PDU
                case pduType2_Values.PDUTYPE2_SAVE_SESSION_INFO:
                    pdu = DecodeSaveSessionInfoPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Play Sound PDU
                case pduType2_Values.PDUTYPE2_PLAY_SOUND:
                    pdu = DecodePlaySoundPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Set Keyboard Indicators PDU
                case pduType2_Values.PDUTYPE2_SET_KEYBOARD_INDICATORS:
                    pdu = DecodeSetKeyboardIndicatorsPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Set Keyboard IME Status PDU
                case pduType2_Values.PDUTYPE2_SET_KEYBOARD_IME_STATUS:
                    pdu = DecodeSetKeyboardImeStatusPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Update PDU
                case pduType2_Values.PDUTYPE2_UPDATE:
                    pdu = DecodeSlowPathUpdatePDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Pointer PDU
                case pduType2_Values.PDUTYPE2_POINTER:
                    pdu = DecodeSlowPathUpdatePDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Status Info PDU
                case pduType2_Values.PDUTYPE2_STATUS_INFO_PDU:
                    pdu = DecodeStatusInfoPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Monitor Layout PDU
                case pduType2_Values.PDUTYPE2_MONITOR_LAYOUT_PDU:
                    pdu = DecodeMonitorLayoutPDU(data, decryptedUserData, securityHeaderType);
                    break;

                // Monitor Layout PDU
                case pduType2_Values.PDUTYPE2_ARC_STATUS_PDU:
                    pdu = DecodeAutoReconnectStatusPDU(data, decryptedUserData, securityHeaderType);
                    break;

                default:
                    throw new FormatException(ConstValue.ERROR_MESSAGE_ENUM_UNRECOGNIZED);
            }
            return pdu;
        }
RdpbcgrDecoder