2.2.2.4.1 RDP 6.1 Compressed Data (RDP61_COMPRESSED_DATA)
The RDP61_COMPRESSED_DATA structure stores chain-compressed data that has been processed by the RDP 6.1 Level-1 Compression Engine and possibly the RDP 5.0 Level-2 Compression Engine (see section 3.1.8.2.1 for a description of chained compression and [MS-RDPBCGR] section 3.1.8.4.2 for a description of RDP 5.0 bulk compression).
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Level1ComprFlags |
Level2ComprFlags |
MatchCount (optional) |
|||||||||||||||||||||||||||||
MatchDetails (variable) |
|||||||||||||||||||||||||||||||
... |
|||||||||||||||||||||||||||||||
Literals (variable) |
Level1ComprFlags (1 byte): An 8-bit, unsigned integer. Level-1 compressor flags.
-
Value
Meaning
L1_PACKET_AT_FRONT
0x04
The level-1 history buffer MUST be reinitialized (by filling it with zeros).
L1_NO_COMPRESSION
0x02
No compression was performed. In this case, the MatchCount and MatchDetails fields MUST NOT be present. The Literals field MUST be present.
L1_COMPRESSED
0x01
Compression with the level-1 compressor was performed and the MatchCount and MatchDetails fields MUST be present and contain at least one match. The Literals field MUST also be present.
L1_INNER_COMPRESSION
0x10
Indicates that additional level-2 compression has been performed on the level-1 compressor output and that the Level2ComprFlags field contains valid data and MUST be processed.
-
See sections 3.1.8.2.2.2 and 3.1.8.2.3 for more details regarding these flags.
Level2ComprFlags (1 byte): An 8-bit, unsigned integer. Level-2 compressor flags.
-
Value
Meaning
PACKET_COMPR_TYPE_64K
0x01
Indicates that RDP 5.0 bulk compression (see [MS-RDPBCGR] section 3.1.8.4.2) was used.
PACKET_COMPRESSED
0x20
The data in the MatchCount, MatchDetails, and Literals fields has been compressed with the level-2 compressor.
PACKET_AT_FRONT
0x40
The decompressed data MUST be placed at the beginning of the level-2 history buffer.
PACKET_FLUSHED
0x80
The level-2 history buffer MUST be reinitialized (by filling it with zeros).
-
See [MS-RDPBCGR] sections 3.1.8.2.1 and 3.1.8.3 for more details regarding these flags.
-
The Level2ComprFlags field MUST be ignored if the L1_INNER_COMPRESSION flag (0x10) is not set.
MatchCount (2 bytes): A 16-bit, unsigned integer. Contains the number of RDP 6.1 Match Details structures (see section 2.2.2.4.1.1) present in the MatchDetails field. This field MUST be present if the L1_COMPRESSED flag (0x01) is set in the Level1ComprFlags field.
MatchDetails (variable): A variable-length field. Contains an array of RDP 6.1 Match Details structures (see section 2.2.2.4.1.1). This field MUST NOT be present if the MatchCount field is not present. If the MatchCount field is present and contains a value greater than zero, the MatchDetails field MUST be present, and the number of RDP 6.1 Match Details structures that it contains is given by the MatchCount field.
Literals (variable): A variable-length field. Contains raw noncompressed literals. The size of the Literals field is given by the equation, CompressedDataSize - (2 + MatchCountSize + MatchDetailsSize).