2.2.6.4 Internal IO Control Message (INTERNAL_IO_CONTROL)

The INTERNAL_IO_CONTROL message is sent from the server to the client in order to submit an internal IO control request to the USB 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 (variable)

...

IoControlCode

InputBufferSize

InputBuffer (variable)

...

OutputBufferSize

RequestId

Header (variable): The SHARED_MSG_HEADER (as specified in section 2.2.1). The InterfaceId field MUST match the value sent previously in the UsbDevice field of the ADD_DEVICE message. The Mask field MUST be set to STREAM_ID_PROXY. The FunctionId field MUST be set to INTERNAL_IO_CONTROL (0x00000103).

IoControlCode (4 bytes): A 32-bit unsigned integer. An internal IO control code as specified in section 2.2.13.

InputBufferSize (4 bytes): A 32-bit unsigned integer. The size, in bytes, of the InputBuffer field.

InputBuffer (variable): A byte array. This value represents the input buffer for the internal IO control request.

OutputBufferSize (4 bytes): A 32-bit unsigned integer. The maximum number of bytes the internal IO control request can return.

RequestId (4 bytes): A 32-bit unsigned integer. This value represents an ID that uniquely identifies this internal IO control request.