2.2.7.1.3 Order Capability Set (TS_ORDER_CAPABILITYSET)

The TS_ORDER_CAPABILITYSET structure advertises support for primary drawing order-related capabilities and is based on the capability set specified in [T128] section 8.2.5 (for more information about primary drawing orders, see [MS-RDPEGDI] section 2.2.2.2.1.1). This capability is sent by both client and server.


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

capabilitySetType

lengthCapability

terminalDescriptor (16 bytes)

...

...

pad4octetsA

desktopSaveXGranularity

desktopSaveYGranularity

pad2octetsA

maximumOrderLevel

numberFonts

orderFlags

orderSupport (32 bytes)

...

...

textFlags

orderSupportExFlags

pad4octetsB

desktopSaveSize

pad2octetsC

pad2octetsD

textANSICodePage

pad2octetsE

capabilitySetType (2 bytes): A 16-bit, unsigned integer. The type of the capability set. This field MUST be set to CAPSTYPE_ORDER (3).

lengthCapability (2 bytes): A 16-bit, unsigned integer. The length in bytes of the capability data, including the size of the capabilitySetType and lengthCapability fields.

terminalDescriptor (16 bytes): A 16-element array of 8-bit, unsigned integers. Terminal descriptor. This field is ignored and SHOULD be set to all zeros.

pad4octetsA (4 bytes): A 32-bit, unsigned integer. Padding. Values in this field MUST be ignored.

desktopSaveXGranularity (2 bytes): A 16-bit, unsigned integer. X granularity used in conjunction with the SaveBitmap Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.12). This value is ignored and assumed to be 1.

desktopSaveYGranularity (2 bytes): A 16-bit, unsigned integer. Y granularity used in conjunction with the SaveBitmap Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.12). This value is ignored and assumed to be 20.

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

maximumOrderLevel (2 bytes): A 16-bit, unsigned integer. Maximum order level. This value is ignored and SHOULD be set to ORD_LEVEL_1_ORDERS (1).

numberFonts (2 bytes): A 16-bit, unsigned integer. Number of fonts. This value is ignored and SHOULD be set to zero.

orderFlags (2 bytes): A 16-bit, unsigned integer. A 16-bit unsigned integer. Support for drawing order options.

Flag

Meaning

NEGOTIATEORDERSUPPORT

0x0002

Indicates support for specifying supported drawing orders in the orderSupport field. This flag MUST be set.

ZEROBOUNDSDELTASSUPPORT

0x0008

Indicates support for the TS_ZERO_BOUNDS_DELTAS (0x20) flag ([MS-RDPEGDI] section 2.2.2.2.1.1.2). The client MUST set this flag.

COLORINDEXSUPPORT

0x0020

Indicates support for sending color indices (not RGB values) in orders.

SOLIDPATTERNBRUSHONLY

0x0040

Indicates that this party can receive only solid and pattern brushes.

ORDERFLAGS_EXTRA_FLAGS

0x0080

Indicates that the orderSupportExFlags field contains valid data.

orderSupport (32 bytes): An array of 32 bytes indicating support for various primary drawing orders. The indices of this array are the negotiation indices for the primary orders specified in [MS-RDPEGDI] section 2.2.2.2.1.1.2.

Negotiation index

Primary drawing order or orders

TS_NEG_DSTBLT_INDEX

0x00

DstBlt Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.1).

TS_NEG_PATBLT_INDEX

0x01

PatBlt Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.3) and OpaqueRect Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.5).

TS_NEG_SCRBLT_INDEX

0x02

ScrBlt Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.7).<26>

TS_NEG_MEMBLT_INDEX

0x03

MemBlt Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.9).<27>

TS_NEG_MEM3BLT_INDEX

0x04

Mem3Blt Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.10).

UnusedIndex1

0x05

The contents of the byte at this index MUST be ignored.

UnusedIndex2

0x06

The contents of the byte at this index MUST be ignored.

TS_NEG_DRAWNINEGRID_INDEX

0x07

DrawNineGrid Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.21).

TS_NEG_LINETO_INDEX

0x08

LineTo Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.11).

TS_NEG_MULTI_DRAWNINEGRID_INDEX

0x09

MultiDrawNineGrid Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.22).

UnusedIndex3

0x0A

The contents of the byte at this index MUST be ignored.

TS_NEG_SAVEBITMAP_INDEX

0x0B

SaveBitmap Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.12).

UnusedIndex4

0x0C

The contents of the byte at this index MUST be ignored.

UnusedIndex5

0x0D

The contents of the byte at this index MUST be ignored.

UnusedIndex6

0x0E

The contents of the byte at this index MUST be ignored.

TS_NEG_MULTIDSTBLT_INDEX

0x0F

MultiDstBlt Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.2).

TS_NEG_MULTIPATBLT_INDEX

0x10

MultiPatBlt Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.4).

TS_NEG_MULTISCRBLT_INDEX

0x11

MultiScrBlt Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.8).

TS_NEG_MULTIOPAQUERECT_INDEX

0x12

MultiOpaqueRect Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.6).

TS_NEG_FAST_INDEX_INDEX

0x13

FastIndex Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.14).

TS_NEG_POLYGON_SC_INDEX

0x14

PolygonSC Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.16) and PolygonCB Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.17).

TS_NEG_POLYGON_CB_INDEX

0x15

PolygonCB Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.17) and PolygonSC Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.16).

TS_NEG_POLYLINE_INDEX

0x16

Polyline Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.18).

UnusedIndex7

0x17

The contents of the byte at this index MUST be ignored.

TS_NEG_FAST_GLYPH_INDEX

0x18

FastGlyph Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.15).

TS_NEG_ELLIPSE_SC_INDEX

0x19

EllipseSC Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.19) and EllipseCB Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.20).

TS_NEG_ELLIPSE_CB_INDEX

0x1A

EllipseCB Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.20) and EllipseSC Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.19).

TS_NEG_INDEX_INDEX

0x1B

GlyphIndex Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.13).

UnusedIndex8

0x1C

The contents of the byte at this index MUST be ignored.

UnusedIndex9

0x1D

The contents of the byte at this index MUST be ignored.

UnusedIndex10

0x1E

The contents of the byte at this index MUST be ignored.

UnusedIndex11

0x1F

The contents of the byte at this index MUST be ignored.

If an order is supported, the byte at the given index MUST contain the value 0x01. Any order not supported by the client causes the server to spend more time and bandwidth using workarounds, such as other primary orders or simply sending screen bitmap data in a Bitmap Update (sections 2.2.9.1.1.3.1.2 and 2.2.9.1.2.1.2). If no primary drawing orders are supported, this array MUST be initialized to all zeros.

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

orderSupportExFlags (2 bytes): A 16-bit, unsigned integer. Extended order support flags.

Flag

Meaning

ORDERFLAGS_EX_CACHE_BITMAP_REV3_SUPPORT

0x0002

The Cache Bitmap (Revision 3) Secondary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.2.8) is supported.

ORDERFLAGS_EX_ALTSEC_FRAME_MARKER_SUPPORT

0x0004

The Frame Marker Alternate Secondary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.3.7) is supported.

pad4octetsB (4 bytes): A 32-bit, unsigned integer. Padding. Values in this field MUST be ignored.

desktopSaveSize (4 bytes): A 32-bit, unsigned integer. The maximum usable size of bitmap space for bitmap packing in the SaveBitmap Primary Drawing Order ([MS-RDPEGDI] section 2.2.2.2.1.1.2.12). This field is ignored by the client and assumed to be 230400 bytes (480 * 480).

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

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

textANSICodePage (2 bytes): A 16-bit, unsigned integer. ANSI code page descriptor being used by the client (for a list of code pages, see [MSDN-CP]). This field is ignored by the client and SHOULD be set to zero by the server.

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