3.3.5.9.3 Sending Fast-Path Update PDU

The Fast-Path Update PDU has the following basic structure (sections 5.3.8 and 5.4.4):

  • fpOutputHeader: Fast-Path Output Header (section 2.2.9.1.2)

  • length1 and length2: Packet length (section 2.2.9.1.2)

  • fipsInformation: Optional Fast-Path FIPS Information (section 2.2.9.1.2)

  • dataSignature: Optional data signature (section 2.2.9.1.2)

  • PDU contents (collection of fast-path output updates):

The fpOutputHeader, length1, and length2 fields MUST be initialized as described in section 2.2.9.1.2. Because the PDU is in fast-path format, the embedded action field of the fpOutputHeader field MUST be set to FASTPATH_OUTPUT_ACTION_FASTPATH (0).

If Enhanced RDP Security (section 5.4) is in effect, the External Security Protocol (section 5.4.5) MUST be used to encrypt the entire PDU and generate a verification digest before the PDU is transmitted over the wire. Also, in this scenario the fipsInformation and dataSignature fields MUST NOT be present.

If Standard RDP Security mechanisms (section 5.3) are in effect, the PDU data following the optional dataSignature field can be encrypted and signed (depending on the values of the Encryption Level and Encryption Method selected by the server as part of the negotiation described in section 5.3.2) using the methods and techniques described in section 5.3.6. If the data is to be encrypted, the embedded flags field of the fpOutputHeader field MUST contain the FASTPATH_OUTPUT_ENCRYPTED (2) flag.

The PDU contents, which encapsulate a collection of output events, is populated with fast-path update data as described in sections 2.2.9.1.2.1.1 through 2.2.9.1.2.1.10. The contents of each individual update SHOULD be compressed by the server before any MAC signature is constructed and encryption methods applied if the size of the data payload exceeds 50 bytes. If this is the case, the embedded compression field of the common updateHeader field MUST contain the FASTPATH_OUTPUT_COMPRESSION_USED flag and the optional compressionFlags field MUST be initialized with the compression usage information.