2.2.2.2.1.2.2 Cache Bitmap - Revision 1 (CACHE_BITMAP_ORDER)

The Cache Bitmap - Revision 1 Secondary Drawing Order is used by the server to instruct the client to store a bitmap in a particular Bitmap Cache entry. This order only supports memory-based bitmap caching. Support for the Revision 1 bitmap caches (section 3.1.1.1.1) is specified in the Revision 1 Bitmap Cache Capability Set ([MS-RDPBCGR] section 2.2.7.1.4.1).


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

...

cacheId

pad1Octet

bitmapWidth

bitmapHeight

bitmapBitsPerPel

bitmapLength

...

cacheIndex

bitmapComprHdr (optional)

...

...

bitmapDataStream (variable)

...

header (6 bytes): The Secondary Drawing Order Header (section 2.2.2.2.1.2.1.1). The embedded orderType field MUST be set to one of the following values.

Value

Meaning

TS_CACHE_BITMAP_UNCOMPRESSED

0x00

The bitmap data in the bitmapDataStream field is uncompressed.

TS_CACHE_BITMAP_COMPRESSED

0x02

The bitmap data in the bitmapDataStream field is compressed.

The embedded extraFlags field MAY contain the following flag.

Value

Meaning

NO_BITMAP_COMPRESSION_HDR

0x0400

Indicates that the bitmapComprHdr field is not present (removed for bandwidth efficiency to save 8 bytes).

cacheId (1 byte): An 8-bit, unsigned integer. The ID of the bitmap cache in which the bitmap data MUST be stored. This value MUST be in the range 0 to 2 (inclusive).

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

bitmapWidth (1 byte): An 8-bit, unsigned integer. The width of the bitmap in pixels.

bitmapHeight (1 byte): An 8-bit, unsigned integer. The height of the bitmap in pixels.

bitmapBitsPerPel (1 byte): An 8-bit, unsigned integer. The color depth of the bitmap data in bits per pixel. This field MUST be one of the following values.

Value

Meaning

0x08

8-bit color depth.

0x10

16-bit color depth.

0x18

24-bit color depth.

0x20

32-bit color depth.

bitmapLength (2 bytes): A 16-bit, unsigned integer. The size in bytes of the data in the bitmapComprHdr and bitmapDataStream fields.

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. This value 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 1 Bitmap Cache Capability Set ([MS-RDPBCGR] section 2.2.7.1.4.1) by the Cache0Entries, Cache1Entries, and Cache2Entries fields.

bitmapComprHdr (8 bytes): Optional Compressed Data Header structure (see [MS-RDPBCGR] section 2.2.9.1.1.3.1.2.3) describing the bitmap data in the bitmapDataStream. This field MUST be present if the TS_CACHE_BITMAP_COMPRESSED (0x02) flag is present in the header field, but the NO_BITMAP_COMPRESSION_HDR (0x0400) flag is not.

bitmapDataStream (variable): A variable-length byte array containing bitmap data (the format of this data is defined in [MS-RDPBCGR] section 2.2.9.1.1.3.1.2.2).