2.2.2.3.7 IOControl Request Message

A server sends this message to perform an IOControl operation on the client-side device.


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

...

IoCode

cbIn

cbOut

DataIn (variable)

...

DataOut (variable)

...

UnusedByte

Header (8 bytes):  A SERVER_IO_HEADER request header. The FunctionId field MUST be set to IOCONTROL_REQUEST (0x00000002).

IoCode (4 bytes):  A 32-bit unsigned integer. This field specifies the I/O control code to be sent to the client device. The IoCode is specific to the redirected device driver; this specification cannot specify all possible values for the IoCode field.

cbIn (4 bytes):  A 32-bit unsigned integer. This field specifies the input buffer size. This field MAY be 0x00000000.

cbOut (4 bytes):  A 32-bit unsigned integer. This field specifies the output buffer size that can be returned using the Data field of the IOControl Reply Message (section 2.2.2.3.8). This field MAY be 0x00000000.

DataIn (variable):  A variable-length array of bytes. The DataIn buffer MUST contain the input data. The length of this field is specified by the cbIn field of this message.

DataOut (variable): A variable-length, optional array of bytes. The size of field DataOut SHOULD be equal to the value provided in field cbOut.

UnusedByte (1 byte):  An 8-bit unsigned integer. This field is unused, MAY be any value, and MUST be ignored.