2.2.9.6 TS_URB_CONTROL_TRANSFER

This packet represents the URB structure URB_CONTROL_TRANSFER, as specified in [MSFT-W2KDDK] Volume 2, Part 4, Chapter 3. If the TransferFlags field in URB_CONTROL_TRANSFER contains the USBD_TRANSFER_DIRECTION_IN flag, the packet is sent using the TRANSFER_IN_REQUEST message with OutputBufferSize set to TransferBufferLength as defined in URB_CONTROL_TRANSFER; otherwise, the packet is sent using the TRANSFER_OUT_REQUEST message with OutputBufferSize set to TransferBufferLength and OutputBuffer set to data in TransferBuffer or TransferBufferMDL as defined in URB_CONTROL_TRANSFER.


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

TS_URB_HEADER

...

PipeHandle

TransferFlags

SetupPacket

...

TS_URB_HEADER (8 bytes): A TS_URB_HEADER as specified in section 2.2.9.1.1.

PipeHandle (4 bytes): A 32-bit unsigned integer. The handle returned from the client after it successfully completes a TS_URB_SELECT_INTERFACE request.

TransferFlags (4 bytes): A 32-bit unsigned integer. This value is from the TransferFlags field in URB_CONTROL_TRANSFER.

SetupPacket (8 bytes): An 8-byte array. This value is from the SetupPacket field in URB_CONTROL_TRANSFER.