The Font Map PDU is a Standard RDP Connection Sequence PDU sent from server to client during the Connection Finalization phase (see section ). It is sent after transmitting the Server Control PDU (Granted Control). This PDU is the last in the connection sequence and signals to the client that it can start sending input PDUs (see section ) to the server.
file:///C:/ts_dev/TestSuites/MS-RDPBCGR/TestSuite/Src/TD/latest_XMLS_16may/RDPBCGR/ _rfc_ms-rdpbcgr2_1_1_22.xml
Inheritance: RdpbcgrServerPdu
        /// <summary>
        /// [TD Reference 3.2.5.3.22]
        /// Decode Font Map PDU
        /// </summary>
        /// <param name="data">data to be parsed</param>
        /// <param name="decryptedUserData">decrypted user data to be parsed</param>
        /// <param name="type">security header type</param>
        /// <returns>decoded Font Map PDU</returns>
        public StackPacket DecodeFontMapPDU(
            byte[] data,
            byte[] decryptedUserData,
            SecurityHeaderType type)
        {
            Server_Font_Map_Pdu pdu = new Server_Font_Map_Pdu();

            // data index
            int dataIndex = 0;

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

            // user data index
            int userDataIndex = 0;

            // FontMapPDU: fontMapPduData
            pdu.fontMapPduData = ParseTsFontMapPdu(decryptedUserData, ref userDataIndex);

            // Check if data length exceeded expectation
            VerifyDataLength(decryptedUserData.Length, userDataIndex, ConstValue.ERROR_MESSAGE_DATA_LENGTH_EXCEEDED);
            return pdu;
        }
        public override StackPacket Clone()
        {
            Server_Font_Map_Pdu cloneControlCoopPdu = new Server_Font_Map_Pdu();

            cloneControlCoopPdu.commonHeader = commonHeader.Clone();
            cloneControlCoopPdu.fontMapPduData = fontMapPduData;

            return cloneControlCoopPdu;
        }