次の方法で共有


2.2.3.3 DVC Data First Compressed PDU (DYNVC_DATA_FIRST_COMPRESSED)

The DYNVC_DATA_FIRST_COMPRESSED PDU is used to send the first block of data of a fragmented message when the data block is compressed. It MUST be the first PDU sent when the message has been fragmented and the data block is compressed. The total uncompressed length, in bytes, of the message to be sent is indicated in the Length field, and the data field contains the first block of the fragmented, compressed data. This PDU MUST NOT be used unless both DVC managers support version 3 of the Remote Desktop Protocol: Dynamic Virtual Channel Extension, and a reliable transport is being used (UDP-R or TCP).


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

cbId

Len

Cmd

ChannelId (variable)

...

Length (variable)

...

Data (variable)

...

cbId (2 bits): Indicates the length of the ChannelId field.

Value

Meaning

0x0

ChannelId field length is 1 byte.

0x1

ChannelId field length is 2 bytes.

0x2

ChannelId field length is 4 bytes.

0x3

Invalid value.

Len (2 bits): Indicates the length of the Length field.

Value

Meaning

0x0

Length field length is 1 byte.

0x1

Length field length is 2 bytes.

0x2

Length field length is 4 bytes.

0x3

Invalid value; MUST NOT be used.

Cmd (4 bits): This field MUST be set to 0x06 (Data First Compressed).

ChannelId (variable): A variable-length 8-bit, 16-bit, or 32-bit unsigned integer. Set to the value of the ChannelId associated with the DVC on which the PDU is being sent.

Length (variable): A variable length 8-bit, 16-bit, or 32-bit unsigned integer. Set to total length of the message to be sent.

Data (variable): An RDP_SEGMENTED_DATA ([MS-RDPEGFX] section 2.2.5.1) structure containing a single RDP8_BULK_ENCODED_DATA ([MS-RDPEGFX] section 2.2.5.3) segment. The segment contains the first block of data in a fragmented message, where the data has been compressed with the RDP 8.0 Bulk Compression algorithm ([MS-RDPEGFX] section 3.1.9.1) with the following modifications:

  • Maximum number of uncompressed bytes in a single segment: 8,192 instead of 65,535.

  • Maximum match distance / minimum history size: 8,192 bytes instead of 2,500,000 bytes.

  • The compression type code is PACKET_COMPR_TYPE_RDP8_LITE (0x06) instead of PACKET_COMPR_TYPE_RDP8 (0x04).

If the data block cannot be compressed, the length of the Data field will be exactly two bytes larger than the length of the uncompressed data block, in order to contain the RDP_SEGMENTED_DATA descriptor and RDP8_BULK_ENCODED_DATA header fields. Thus, the maximum length of the data block, before compression, is 1,598 bytes minus the space taken for the Cmd, Len, cbId, ChannelId, and Length fields.