2.2.1.1.1 Remote Programs Capability Set

The Remote Programs Capability Set is sent by the server in the Demand Active PDU and by the client in the Confirm Active PDU, as specified in [MS-RDPBCGR] section 2.2.1.13. It indicates that the client and server are capable of communicating RAIL PDUs over the RAIL static virtual channel.


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

RailSupportLevel

CapabilitySetType (2 bytes): An unsigned 16-bit integer. The type of the capability set. This field MUST be set to 0x0017 (CAPSTYPE_RAIL).

LengthCapability (2 bytes): An unsigned 16-bit integer. The combined length of the CapabilitySetType, LengthCapability, and RailSupportLevel fields, in bytes.

RailSupportLevel (4 bytes): A 4-byte bit field specifying support for Remote Programs and the Docked Language Bar for Remote Programs.<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

S

L

H

I

C

M

K

E

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Where the bits are defined as:

Value

Description

S

TS_RAIL_LEVEL_SUPPORTED

Set to 1 if the client/server is capable of supporting Remote Programs; set to 0 otherwise.

L

TS_RAIL_LEVEL_DOCKED_LANGBAR_SUPPORTED

Set to 1 if the client/server is capable of supporting Docked Language Bar for Remote Programs; set to 0 otherwise. This flag MUST be set to 0 if TS_RAIL_LEVEL_SUPPORTED is 0.

H

TS_RAIL_LEVEL_SHELL_INTEGRATION_SUPPORTED

Set to 1 if the client/server is capable of supporting extended shell integration like tabbed windows and overlay icons for Remote Programs; set to 0 otherwise. This flag MUST be set to 0 if TS_RAIL_LEVEL_SUPPORTED is 0.

I

TS_RAIL_LEVEL_LANGUAGE_IME_SYNC_SUPPORTED

Set to 1 if the client/server is capable of supporting syncing language/IME changes for Remote Programs; set to 0 otherwise. This flag MUST be set to 0 if TS_RAIL_LEVEL_SUPPORTED is 0.

C

TS_RAIL_LEVEL_SERVER_TO_CLIENT_IME_SYNC_SUPPORTED

Set to 1 if the client/server is capable of supporting syncing IME changes originating at the server for Remote Programs; set to 0 otherwise. This flag MUST be set to 0 if TS_RAIL_LEVEL_SUPPORTED is 0.

M

TS_RAIL_LEVEL_HIDE_MINIMIZED_APPS_SUPPORTED

Set to 1 if the client/server supports hiding minimized windows of Remote Programs on the server; set to 0 otherwise. This flag MUST be set to 0 if TS_RAIL_LEVEL_SUPPORTED is 0.

K

TS_RAIL_LEVEL_WINDOW_CLOAKING_SUPPORTED

Set to 1 if the client/server supports syncing per-window cloak state changes originating on the client for Remote Programs; set to 0 otherwise. This flag MUST be set to 0 if TS_RAIL_LEVEL_SUPPORTED is 0.

E

TS_RAIL_LEVEL_HANDSHAKE_EX_SUPPORTED

Set to 1 if the client/server supports the HandshakeEx PDU (section 2.2.2.2.3); set to 0 otherwise. This flag MUST be set to 0 if TS_RAIL_LEVEL_SUPPORTED is 0.