2.2.2.7.1 General Capability Set (GENERAL_CAPS_SET)

 This packet is embedded into Server Core Capability Request and Client Core Capability Response messages. It describes non–device-specific capabilities.


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

...

osType

osVersion

protocolMajorVersion

protocolMinorVersion

ioCode1

ioCode2

extendedPDU

extraFlags1

extraFlags2

SpecialTypeDeviceCap

Header (8 bytes):  A CAPABILITY_HEADER header. The CapabilityType field of this header MUST be set to CAP_GENERAL_TYPE. The Version field of this header MUST have one of the following values.

Value

Meaning

GENERAL_CAPABILITY_VERSION_01

0x00000001

Version 1. The SpecialTypeDeviceCap field of GENERAL_CAPS_SET is not present.

GENERAL_CAPABILITY_VERSION_02

0x00000002

Version 2. The SpecialTypeDeviceCap field of GENERAL_CAPS_SET is present.

osType (4 bytes):  A 32-bit unsigned integer that is the identifier for the operating system that the capabilities are describing. The value of this field MUST be ignored.

osVersion (4 bytes):  A 32-bit unsigned integer. This field is unused and SHOULD be ignored.

protocolMajorVersion (2 bytes):  A 16-bit unsigned integer. This field MUST be set to 1.

protocolMinorVersion (2 bytes):  A 16-bit unsigned integer. This field MUST be set to one of the values described by the VersionMinor field of the Server Client ID Confirm (section 2.2.2.6) packet.

ioCode1 (4 bytes):  A 32-bit unsigned integer that identifies a bitmask of the supported I/O requests for the given device. If the bit is set, the I/O request is allowed. The requests are identified by the MajorFunction field in the Device I/O Request (section 2.2.1.4) header. This field MUST be set to a valid combination of the following values.

Value

Meaning

RDPDR_IRP_MJ_CREATE

0x00000001

Unused, always set.

RDPDR_IRP_MJ_CLEANUP

0x00000002

Unused, always set.

RDPDR_IRP_MJ_CLOSE

0x00000004

Unused, always set.

RDPDR_IRP_MJ_READ

0x00000008

Unused, always set.

RDPDR_IRP_MJ_WRITE

0x00000010

Unused, always set.

RDPDR_IRP_MJ_FLUSH_BUFFERS

0x00000020

Unused, always set.

RDPDR_IRP_MJ_SHUTDOWN

0x00000040

Unused, always set.

RDPDR_IRP_MJ_DEVICE_CONTROL

0x00000080

Unused, always set.

RDPDR_IRP_MJ_QUERY_VOLUME_INFORMATION

0x00000100

Unused, always set.

RDPDR_IRP_MJ_SET_VOLUME_INFORMATION

0x00000200

Unused, always set.

RDPDR_IRP_MJ_QUERY_INFORMATION

0x00000400

Unused, always set.

RDPDR_IRP_MJ_SET_INFORMATION

0x00000800

Unused, always set.

RDPDR_IRP_MJ_DIRECTORY_CONTROL

0x00001000

Unused, always set.

RDPDR_IRP_MJ_LOCK_CONTROL

0x00002000

Unused, always set.

RDPDR_IRP_MJ_QUERY_SECURITY

0x00004000

Enable Query Security requests (IRP_MJ_QUERY_SECURITY).

RDPDR_IRP_MJ_SET_SECURITY

0x00008000

Enable Set Security requests (IRP_MJ_SET_SECURITY).

ioCode2 (4 bytes):  A 32-bit unsigned integer that is currently reserved for future use, and MUST be set to 0.

extendedPDU (4 bytes):  A 32-bit unsigned integer that specifies extended PDU flags. This field MUST be set as a bitmask of the following values.

Value

Meaning

RDPDR_DEVICE_REMOVE_PDUS

0x00000001

Allow the client to send Client Drive Device List Remove packets.

RDPDR_CLIENT_DISPLAY_NAME_PDU

0x00000002

Unused, always set.

RDPDR_USER_LOGGEDON_PDU

0x00000004

Allow the server to send a Server User Logged On packet.

extraFlags1 (4 bytes): A 32-bit unsigned integer that specifies extended flags. The extraFlags1 field MUST be set as a bitmask of the following value.

Value

Meaning

ENABLE_ASYNCIO

0x00000001

Optionally present only in the Client Core Capability Response. Allows the server to send multiple simultaneous read or write requests on the same file from a redirected file system.<9>

extraFlags2 (4 bytes):  A 32-bit unsigned integer that is currently reserved for future use, and MUST be set to 0.

SpecialTypeDeviceCap (4 bytes):  A 32-bit unsigned integer that specifies the number of special devices to be redirected before the user is logged on. Special devices are those that are safe and/or required to be redirected before a user logs on (such as smart cards and serial ports).