IOCTL_USB_GET_TRANSPORT_CHARACTERISTICS IOCTL (usbioctl.h)

The client driver sends this request to retrieve the transport characteristics.

Major code

IRP_MJ_DEVICE_CONTROL

Input / Output buffer

The AssociatedIrp.SystemBuffer member is a pointer to a caller-allocated USB_TRANSPORT_CHARACTERISTICS structure. On input, set Version to USB_TRANSPORT_CHARACTERISTICS_VERSION_1. On output Version is reset to a version less than or equal to USB_TRANSPORT_CHARACTERISTICS_VERSION_1; he remaining members of the structure is filled with transport information.

Input / Output buffer length

The size of the USB_TRANSPORT_CHARACTERISTICS structure.

Status block

Irp->IoStatus.Status is set to STATUS_SUCCESS if the request is successful. Otherwise, Status to the appropriate error condition as a NTSTATUS code.

Remarks

This request retrieves the transport characteristics to decide on an algorithm for streaming. For example, a display driver can use the latency and bandwidth information to decide its codec selection.

This information might not be always available. The USB driver stack depends on the underlying transport to expose these values. Therefore, the client driver must have a back up mechanism for such cases where the request.

If the client driver is interested in knowing the latest information at all times, the driver must register for notification when transport characteristics change, keep a request pending with the USB driver stack, and unregister when the notification is no longer required. The driver can accomplish all those tasks by sending these IOCTL requests.

Requirements

Requirement Value
Minimum supported client Windows 10, version 1709
Minimum supported server Windows Server 2016
Header usbioctl.h
IRQL <=DISPATCH_LEVEL

See also

Creating IOCTL Requests in Drivers

USB client drivers for Media-Agnostic (MA-USB)

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously