2.2.1.17.1 Persistent Key List PDU Data (TS_BITMAPCACHE_PERSISTENT_LIST_PDU)

The TS_BITMAPCACHE_PERSISTENT_LIST_PDU structure contains a list of cached bitmap keys saved from Cache Bitmap (Revision 2) Orders ([MS-RDPEGDI] section 2.2.2.2.1.2.3) that were sent in previous sessions. By including a key in the Persistent Key List PDU Data the client indicates to the server that it has a local copy of the bitmap associated with the key, which means that the server does not need to retransmit the bitmap to the client (for more details about the Persistent Bitmap Cache, see [MS-RDPEGDI] section 3.1.1.1.1). The bitmap keys can be sent in more than one Persistent Key List PDU, with each PDU being marked using flags in the bBitMask field. The number of bitmap keys encapsulated within the Persistent Key List PDU Data SHOULD be limited to 169.


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

shareDataHeader (18 bytes)

...

...

...

numEntriesCache0

numEntriesCache1

numEntriesCache2

numEntriesCache3

numEntriesCache4

totalEntriesCache0

totalEntriesCache1

totalEntriesCache2

totalEntriesCache3

totalEntriesCache4

bBitMask

Pad2

Pad3

entries (variable)

...

shareDataHeader (18 bytes): Share Data Header (section 2.2.8.1.1.1.2) containing information about the packet. The type subfield of the pduType field of the Share Control Header (section 2.2.8.1.1.1.1) MUST be set to PDUTYPE_DATAPDU (7). The pduType2 field of the Share Data Header MUST be set to PDUTYPE2_BITMAPCACHE_PERSISTENT_LIST (43).

numEntriesCache0 (2 bytes): A 16-bit, unsigned integer. The number of entries for Bitmap Cache 0 in the current Persistent Key List PDU.

numEntriesCache1 (2 bytes): A 16-bit, unsigned integer. The number of entries for Bitmap Cache 1 in the current Persistent Key List PDU.

numEntriesCache2 (2 bytes): A 16-bit, unsigned integer. The number of entries for Bitmap Cache 2 in the current Persistent Key List PDU.

numEntriesCache3 (2 bytes): A 16-bit, unsigned integer. The number of entries for Bitmap Cache 3 in the current Persistent Key List PDU.

numEntriesCache4 (2 bytes): A 16-bit, unsigned integer. The number of entries for Bitmap Cache 4 in the current Persistent Key List PDU.

totalEntriesCache0 (2 bytes): A 16-bit, unsigned integer. The total number of entries for Bitmap Cache 0 expected across the entire sequence of Persistent Key List PDUs. This value MUST remain unchanged across the sequence. The sum of the totalEntriesCache0, totalEntriesCache1, totalEntriesCache2, totalEntriesCache3, and totalEntriesCache4 fields MUST NOT exceed 262,144.

totalEntriesCache1 (2 bytes): A 16-bit, unsigned integer. The total number of entries for Bitmap Cache 1 expected across the entire sequence of Persistent Key List PDUs. This value MUST remain unchanged across the sequence. The sum of the totalEntriesCache0, totalEntriesCache1, totalEntriesCache2, totalEntriesCache3, and totalEntriesCache4 fields MUST NOT exceed 262,144.

totalEntriesCache2 (2 bytes): A 16-bit, unsigned integer. The total number of entries for Bitmap Cache 2 expected across the entire sequence of Persistent Key List PDUs. This value MUST remain unchanged across the sequence. The sum of the totalEntriesCache0, totalEntriesCache1, totalEntriesCache2, totalEntriesCache3, and totalEntriesCache4 fields MUST NOT exceed 262,144.

totalEntriesCache3 (2 bytes): A 16-bit, unsigned integer. The total number of entries for Bitmap Cache 3 expected across the entire sequence of Persistent Key List PDUs. This value MUST remain unchanged across the sequence. The sum of the totalEntriesCache0, totalEntriesCache1, totalEntriesCache2, totalEntriesCache3, and totalEntriesCache4 fields MUST NOT exceed 262,144.

totalEntriesCache4 (2 bytes): A 16-bit, unsigned integer. The total number of entries for Bitmap Cache 4 expected across the entire sequence of Persistent Key List PDUs. This value MUST remain unchanged across the sequence.

bBitMask (1 byte): An 8-bit, unsigned integer. The sequencing flag.

Flag

Meaning

PERSIST_PDU_FIRST

0x01

Indicates that the PDU is the first in a sequence of Persistent Key List PDUs.

PERSIST_PDU_LAST

0x02

Indicates that the PDU is the last in a sequence of Persistent Key List PDUs.

If neither PERSIST_FIRST_PDU (0x01) nor PERSIST_LAST_PDU (0x02) are set, then the current PDU is an intermediate packet in a sequence of Persistent Key List PDUs.

Pad2 (1 byte): An 8-bit, unsigned integer. Padding. Values in this field MUST be ignored.

Pad3 (2 bytes): A 16-bit, unsigned integer. Padding. Values in this field MUST be ignored.

entries (variable): An array of TS_BITMAPCACHE_PERSISTENT_LIST_ENTRY structures which describe 64-bit bitmap keys. The keys MUST be arranged in order from low cache number to high cache number. For instance, if a PDU contains one key for Bitmap Cache 0 and two keys for Bitmap Cache 1, then numEntriesCache0 will be set to 1, numEntriesCache1 will be set to 2, and numEntriesCache2, numEntriesCache3, and numEntriesCache4 will all be set to zero. The keys will be arranged in the following order: (Bitmap Cache 0, Key 1), (Bitmap Cache 1, Key 1), (Bitmap Cache 1, Key 2).