2.2.2.2.1.2.8 Cache Bitmap - Revision 3 (CACHE_BITMAP_REV3_ORDER)

The Cache Bitmap - Revision 3 Secondary Drawing Order is used by the server to instruct the client to store a bitmap in a particular Bitmap Cache entry. This order supports persistent disk bitmap caching and also enables the use of the bitmap codecs specified in the Bitmap Codec Capability Set (see [MS-RDPBCGR] section 2.2.7.2.10). Support for the Cache Bitmap - Revision 3 Secondary Drawing Order is specified in the Order Capability Set (see [MS-RDPBCGR] section 2.2.7.1.3).


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

header

...

cacheIndex

key1

key2

bitmapData (variable)

...

header (6 bytes): A Secondary Drawing Order Header (see section 2.2.2.2.1.2.1.1). The embedded orderType field MUST be set to TS_CACHE_BITMAP_COMPRESSED_REV3 (8).

The format of the embedded extraFlags field is specified by the following bitmask diagram.


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

cacheId

bitsPerPixelId

flags

cacheId (3 bits): A 3-bit, unsigned integer. The ID of the bitmap cache in which bitmap data MUST be stored. This value MUST be greater than or equal to 0 and less than the number of bitmap caches being used for the connection. The number of bitmap caches being used is specified by the NumCellCaches field of the Revision 2 Bitmap Cache Capability Set ([MS-RDPBCGR] section 2.2.7.1.4.2).

bitsPerPixelId (4 bits): A 4-bit, unsigned integer. The color depth of the bitmap data in bits per pixel. It MUST be one of the following values.

Value

Meaning

CBR23_8BPP

0x3

8 bits per pixel

CBR23_16BPP

0x4

16 bits per pixel

CBR23_24BPP

0x5

24 bits per pixel

CBR23_32BPP

0x6

32 bits per pixel

flags (9 bits): A 9-bit, unsigned integer. Operational flags.

Value

Meaning

CBR3_IGNORABLE_FLAG

0x08

This flag has no meaning and its value is ignored by the client.

CBR3_DO_NOT_CACHE

0x10

Implies that the cacheIndex field MUST be ignored, and the bitmap MUST be placed in the last entry of the bitmap cache specified by the cacheId field.

cacheIndex (2 bytes): A 16-bit unsigned integer. The index of the target entry in the destination bitmap cache (specified by the cacheId field) where the bitmap data MUST be stored. If the CBR3_DO_NOT_CACHE flag is not set in the header field, the bitmap cache index MUST be greater than or equal to 0 and less than the maximum number of entries allowed in the destination bitmap cache. The maximum number of entries allowed in each individual bitmap cache is specified in the Revision 2 Bitmap Cache Capability Set ([MS-RDPBCGR] section 2.2.7.1.4.2) by the BitmapCache0CellInfo, BitmapCache1CellInfo, BitmapCache2CellInfo, BitmapCache3CellInfo, and BitmapCache4CellInfo fields. If the CBR3_DO_NOT_CACHE flag is set, the cacheIndex MUST be set to BITMAPCACHE_WAITING_LIST_INDEX (32767).

key1 (4 bytes): A 32-bit, unsigned integer. The low 32 bits of the 64-bit persistent bitmap cache key.

key2 (4 bytes): A 32-bit, unsigned integer. The high 32 bits of the 64-bit persistent bitmap cache key.

bitmapData (variable): An Extended Bitmap Data (see [MS-RDPBCGR] section 2.2.9.2.1.1) structure that contains an encoded bitmap image.