2.2.3.2 DVC Data PDU (DYNVC_DATA)

The DYNVC_DATA PDU is used to send both single messages and blocks of fragmented messages when compression is not being used for the data block.

A single DYNVC_DATA PDU is used to send a message when the total length of the message data is less than or equal to 1,590 bytes.

Multiple DYNVC_DATA PDUs are used to send messages that have been fragmented and that are sent subsequent to a DYNVC_DATA_FIRST (section 2.2.3.1) PDU. DYNVC_DATA PDUs are sent until the entire fragmented message has been sent.


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

Sp

Cmd

ChannelId (variable)

...

Data (variable)

...

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

Value

Meaning

0x00

ChannelId field length is 1 byte.

0x01

ChannelId field length is 2 bytes.

0x02

ChannelId field length is 4 bytes.

0x03

Invalid value.

Sp (2 bits): Unused. SHOULD be initialized to 0x00.<8>

Cmd (4 bits): MUST be set to 0x03 (Data).

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 upon which the PDU is being sent.

Data (variable): An array of bytes. Message data is sent as 8-bit unsigned integers.  The maximum size of the array is 1,600 minus the length of the DYNVC_DATA header in bytes. The actual size of this field is the length of the packet after reassembly, as described in [MS-RDPBCGR] section 3.1.5.2.2.1, minus the space taken for Cmd, Sp, cbId, and ChannelId fields.