This header initiates a device control request. This message has different interpretations depending on the device for which it is issued. The device type is determined by the DeviceId field in the DR_DEVICE_IOREQUEST header.
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
|
|---|
|
DeviceIoRequest
|
|
...
|
|
...
|
|
...
|
|
...
|
|
...
|
|
OutputBufferLength
|
|
InputBufferLength
|
|
IoControlCode
|
|
Padding
|
|
...
|
|
...
|
|
...
|
|
...
|
|
InputBuffer (variable)
|
|
...
|
-
DeviceIoRequest (24 bytes): A DR_DEVICE_IOREQUEST header. The MajorFunction field in this header MUST be set to IRP_MJ_DEVICE_CONTROL.
-
OutputBufferLength (4 bytes): A 32-bit unsigned integer that specifies the maximum number of bytes expected in the OutputBuffer field of the Device Control Response (section 2.2.1.5.5).
-
InputBufferLength (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the InputBuffer field.
-
IoControlCode (4 bytes): A 32-bit unsigned integer. This field is specific to the redirected device.
-
Padding (20 bytes): An array of 20 bytes. Reserved. This field MAY be set to any value, and MUST be ignored on receipt.
-
InputBuffer (variable): A variable-size byte array whose size is specified by the InputBufferLength field.