Universal Serial Bus (USB)

This reference section describes the driver programming interfaces that are included in the Windows Driver Kit (WDK). The programming interfaces are used for developing drivers that interact with USB devices, host controllers, connectors. These include export functions that the drivers can call, callback routines that the driver can implement, I/O requests that the driver can send to the Microsoft-provided USB driver stack, and various data structures that are used in those requests.

For the programming guide, see Universal Serial Bus (USB).

Common USB client driver reference

A Windows Driver Model (WDM)-based USB client driver can call functions to communicate with the Microsoft-provided USB driver stack. These functions are defined in Usbdlib.h and the client driver requires the Usbdex.lib library. The library gets loaded and statically linked to the client driver module when it is built. A client driver that calls these routines can run on Windows Vista and later versions of Windows.

Programming Guide

Developing Windows client drivers for USB devices.

Headers

Deprecated functions, IOCTL requests for all USB drivers

These functions have been deprecated.

Do not use.

  • USBD_CalculateUsbBandwidth
  • USBD_CreateConfigurationRequest
  • USBD_Debug_LogEntry
  • USBD_GetUSBDIVersion
  • USBD_ParseConfigurationDescriptor
  • USBD_QueryBusTime
  • USBD_RegisterHcFilter

These I/O requests have been deprecated or reserved for internal use.

USB client drivers must not use these I/O requests:

  • IOCTL_USB_DIAG_IGNORE_HUBS_OFF
  • IOCTL_USB_DIAG_IGNORE_HUBS_ON
  • IOCTL_USB_DIAGNOSTIC_MODE_OFF
  • IOCTL_USB_DIAGNOSTIC_MODE_ON
  • IOCTL_USB_GET_HUB_CAPABILITIES
  • IOCTL_USB_HCD_DISABLE_PORT
  • IOCTL_USB_HCD_ENABLE_PORT
  • IOCTL_USB_HCD_GET_STATS_1
  • IOCTL_USB_HCD_GET_STATS_2
  • IOCTL_USB_RESET_HUB

Kernel-Mode IOCTLs

USB client drivers can receive or send any of the following I/O requests in kernel mode:

User-Mode IOCTLs sent by applications and services

USB client drivers receive these user-mode I/O control requests at the kernel level:

Dual-role controller driver reference

A USB driver for a dual-role controller can behave as a host controller or a function controller depending on the hardware to which it is connected. These controllers are common on mobile devices and allow for connections to PCs, as well as USB peripherals like keyboards and mice. A mobile device can behave as a peripheral when it is connected to a PC, allowing you to transfer files between your PC and the mobile device. In that scenario, the controller on the device operates in the function role. Conversely, the controller can operate in the host role when connected to USB peripherals like storage drives, keyboard, mice.

One of the main responsibilities of a driver for a dual-role controller is to switch between those two roles, tearing down the previous role's device node and loading the device node for the new role. When writing the driver, use the WDF class extension-client driver model. For more information about the WDF class extension-client driver model, see Ursdevice.h.

Dual-role controller driver programming guide

For information about enabling a Windows system for USB dual-role support, see USB Dual Role Driver Stack Architecture.

Dual-role controller driver headers

Emulated host controller driver reference

Windows drivers can present non-USB devices as emulated USB devices. By using the WDF class extension-client driver model, you can write a driver that translates USB-level constructs (reset, data transfers) to the actual underlying bus by using the hardware’s interface. The class extension and the client driver represent an emulated host controller with a root hub that is capable of presenting an attached device to the system as an USB device.

  • USB device emulation class extension (UdeCx). This is an in-box driver included Windows 10.
  • The client driver is written by an IHV/OEM. This driver is referred to as the UDE client driver.

The driver pair loads as the FDO in the host controller device stack. The UDE client driver communicates with Udecx by using a set of methods and event callback functions to handle device requests and notify the class extension about various events.

Emulated host controller programming guide

Developing Windows drivers for emulated USB devices (UDE).

Emulated host controller headers

Function class driver reference

A USB function class driver implements the functionality of a specific interface (or group of interfaces) on the USB device. The class driver handle requests issued by user mode services, or it can forwards requests to USB function class extension (UFX) and its function client driver. Certain class drivers are included in Windows, such as MTP and IpOverUsb. Windows also provides a generic kernel-mode class driver, Generic USBFN (GenericUSBFn.sys). If a particular interface or functionality is not provided by a system-supplied driver, you might need write a function class driver. The class driver may be implemented as a kernel-mode driver by using Windows Driver Frameworks (WDF). Alternatively, you may implement it as a user-mode service. In that case, your class driver must be paired with the system-supplied class driver, Generic USBFN. For example, the MTP class driver runs as a user-mode service that transferring files to and from the device.

Function class driver headers

USB function controller client driver reference

The USB function client driver is responsible for implementing a function controller-specific operations. The client driver communicates with the USB function class extension (UFX) module to handle endpoint data transfers, USB device state changes (reset, suspend, resume), attach/detach detection, port/charger detection. The client driver is also responsible for handling power management, and PnP events.

USB function controller client driver programming guide

Write a USB function controller client driver

USB function controller client driver headers

Filter driver for supporting USB chargers

Write a filter driver that supports detection of chargers, if the function controller uses the in-box Synopsys and ChipIdea drivers. If you are writing a client driver for a proprietary function controller, charger/attach detection is integrated in the client driver by implementing EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTY, EVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESET, and EVT_UFX_DEVICE_DETECT_PROPRIETARY_CHARGER.

Filter driver for supporting USB chargers programming guide

USB filter driver for supporting USB chargers

Filter driver for supporting USB chargers headers

Host controller driver reference

The USB host controller extension is a system-supplied extension to the Kernel-Mode Driver Framework (KMDF). Within the Microsoft USB Driver Stack Architecture, UCX provides functionality to assist a host controller client driver in managing a USB host controller device. The client driver handles hardware operations and events, power management, and PnP events. UCX serves as an abstracted interface to the rest of the Microsoft USB 3.0 stack, queues requests to the client driver, and performs other tasks.

If you are developing an xHCI host controller that is not compliant with the specification or developing a custom non-xHCI hardware (such as a virtual host controller), you can write a host controller driver that communicates with the UCX class extension.

Host controller driver programming guide

Developing Windows drivers for USB host controllers

Host controller driver headers

Type-C driver reference

Windows 10 introduces support for the new USB connector: USB Type-C. You can write a driver for these scenarios:

Scenario Headers Programming Guide
If your USB Type-C hardware has the capability of handling the power delivery (PD) state machine.

ucmmanager.h

Write a USB Type-C connector driver
If your driver wants to participate in the policy decisions for USB Type-C connectors. Usbpmapi.h Write a USB Type-C Policy Manager client driver
If your hardware does not support PD.

ucmtcpcidevice.h

ucmtcpciglobals.h

ucmtcpciportcontroller.h

ucmtcpciportcontrollerrequests.h

ucmtypes.h

Write a USB Type-C port controller driver.

Ucmucsicx.h

Ucmucsidevice.h

Ucmucsifuncenum.h

Ucmucsiglobals.h

Ucmucsippm.h

Ucmucsippmrequests.h

Ucmucsispec.h

Write a UCSI client driver

IOCTLs

 
IOCTL_GET_HCD_DRIVERKEY_NAME

The IOCTL_GET_HCD_DRIVERKEY_NAME I/O control request retrieves the driver key name in the registry for a USB host controller driver.
IOCTL_INTERNAL_USB_CYCLE_PORT

The IOCTL_INTERNAL_USB_CYCLE_PORT I/O request simulates a device unplug and replug on the port associated with the PDO.
IOCTL_INTERNAL_USB_ENABLE_PORT

The IOCTL_INTERNAL_USB_ENABLE_PORT IOCTL has been deprecated. Do not use.
IOCTL_INTERNAL_USB_GET_BUS_INFO

The IOCTL_INTERNAL_USB_GET_BUS_INFO I/O request queries the bus driver for certain bus information.
IOCTL_INTERNAL_USB_GET_BUSGUID_INFO

The IOCTL_INTERNAL_USB_GET_BUSGUID_INFO IOCTL has been deprecated. Do not use.
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME

The IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME I/O request queries the bus driver for the device name of the USB host controller.
IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO

The IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO I/O request returns information about a USB device and the hub it is attached to.
IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE

The IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE IOCTL is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE_EX

The IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE_EX IOCTL is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_GET_HUB_COUNT

The IOCTL_INTERNAL_USB_GET_HUB_COUNT IOCTL is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_GET_HUB_NAME

The IOCTL_INTERNAL_USB_GET_HUB_NAME I/O request is used by drivers to retrieve the UNICODE symbolic name for the target PDO if the PDO is for a hub.
IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO

The IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_GET_PORT_STATUS

The IOCTL_INTERNAL_USB_GET_PORT_STATUS I/O request queries the status of the PDO. IOCTL_INTERNAL_USB_GET_PORT_STATUS is a kernel-mode I/O control request. This request targets the USB hub PDO. This IOCTL must be sent at IRQL = PASSIVE_LEVEL.
IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO

The IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO IOCTL is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS

The IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS I/O request returns information about the host controller the USB device is attached to, and the device's location in the USB device tree.
IOCTL_INTERNAL_USB_GET_TT_DEVICE_HANDLE

The IOCTL_INTERNAL_USB_GET_TT_DEVICE_HANDLE is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_NOTIFY_IDLE_READY

The IOCTL_INTERNAL_USB_NOTIFY_IDLE_READY IOCTL is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_RECORD_FAILURE

The IOCTL_INTERNAL_USB_RECORD_FAILURE IOCTL is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE

The IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE I/O request registers the driver of a USB multi-function device (composite driver) with the underlying USB driver stack.
IOCTL_INTERNAL_USB_REQ_GLOBAL_RESUME

The IOCTL_INTERNAL_USB_REQ_GLOBAL_RESUME IOCTL is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_REQ_GLOBAL_SUSPEND

The IOCTL_INTERNAL_USB_REQ_GLOBAL_SUSPEND IOCTL is used by the USB hub driver. Do not use.
IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION

The IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION I/O request is sent by the driver of a Universal Serial Bus (USB) multi-function device (composite driver) to request remote wake-up notifications from a specific function in the device.
IOCTL_INTERNAL_USB_RESET_PORT

The IOCTL_INTERNAL_USB_RESET_PORT I/O control request is used by a driver to reset the upstream port of the device it manages.
IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION

The IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION I/O request is used by drivers to inform the USB bus driver that a device is idle and can be suspended.
IOCTL_INTERNAL_USB_SUBMIT_URB

The IOCTL_INTERNAL_USB_SUBMIT_URB I/O control request is used by drivers to submit an URB to the bus driver. IOCTL_INTERNAL_USB_SUBMIT_URB is a kernel-mode I/O control request. This request targets the USB hub PDO.
IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE

The IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE I/O request unregisters the driver of a USB multi-function device (composite driver) and releases all resources that are associated with registration.
IOCTL_INTERNAL_USBFN_ACTIVATE_USB_BUS

The USB class driver sends this request to activate the bus so that the driver can prepare to process bus events and handle traffic.
IOCTL_INTERNAL_USBFN_BUS_EVENT_NOTIFICATION

The USB class driver sends this request to prepare for notifications received from the USB function class extension (UFX) in response to an event on the bus, such as a change in the port type or a receipt of a non-standard setup packet.
IOCTL_INTERNAL_USBFN_CONTROL_STATUS_HANDSHAKE_IN

The class driver sends this request to send a zero-length control status handshake on endpoint 0 in the IN direction.
IOCTL_INTERNAL_USBFN_CONTROL_STATUS_HANDSHAKE_OUT

The class driver sends this request to send a zero-length control status handshake on endpoint 0 in the OUT direction.
IOCTL_INTERNAL_USBFN_DEACTIVATE_USB_BUS

Do not use.
IOCTL_INTERNAL_USBFN_DESCRIPTOR_UPDATE

The USB function class extension sends this request to the client driver to update to the endpoint descriptor for the specified endpoint.
IOCTL_INTERNAL_USBFN_GET_CLASS_INFO

The class driver sends this request IO control code to retrieve information about the available pipes for a device, as configured in the registry.
IOCTL_INTERNAL_USBFN_GET_INTERFACE_DESCRIPTOR_SET

The class driver sends this request to get the entire USB interface descriptor set for a function on the device.
IOCTL_INTERNAL_USBFN_GET_PIPE_STATE

The class driver sends this request to get the stall state of the specified pipe.
IOCTL_INTERNAL_USBFN_REGISTER_USB_STRING

The class driver sends this request to register a USB string descriptor.
IOCTL_INTERNAL_USBFN_RESERVED

Do not use this (IOCTL_INTERNAL_USBFN_RESERVED) article.
IOCTL_INTERNAL_USBFN_SET_PIPE_STATE

The class driver sends this request to set the stall state of the specified USB pipe.
IOCTL_INTERNAL_USBFN_SET_POWER_FILTER_EXIT_LPM

Do not use this (IOCTL_INTERNAL_USBFN_SET_POWER_FILTER_EXIT_LPM) article.
IOCTL_INTERNAL_USBFN_SET_POWER_FILTER_STATE

Do not use this (IOCTL_INTERNAL_USBFN_SET_POWER_FILTER_STATE) article.
IOCTL_INTERNAL_USBFN_SIGNAL_REMOTE_WAKEUP

The class driver sends this request to get remote wake-up notifications from endpoints.
IOCTL_INTERNAL_USBFN_TRANSFER_IN

The class driver sends this request to initiate a data transfer to the host on the specified pipe.
IOCTL_INTERNAL_USBFN_TRANSFER_IN_APPEND_ZERO_PKT

The class driver sends this request to initiate an IN transfer to the specified pipe and appends a zero-length packet to indicate the end of the transfer.
IOCTL_INTERNAL_USBFN_TRANSFER_OUT

The class driver sends this request to initiate a data transfer from the host on the specified pipe.
IOCTL_UCMTCPCI_PORT_CONTROLLER_ALTERNATE_MODE_ENTERED

Notifies the client driver that an alternate mode is entered so that the driver can perform additional tasks.
IOCTL_UCMTCPCI_PORT_CONTROLLER_ALTERNATE_MODE_EXITED

Notifies the client driver that an alternate mode is exited so that the driver can perform additional tasks.
IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_CONFIGURED

Notifies the client driver that the DisplayPort alternate mode on the partner device has been configured with pin assignment so that the driver can perform additional tasks.
IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS_CHANGED

Notifies the client driver that the display out status of the DisplayPort connection has changed so that the driver can perform additional tasks.
IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_HPD_STATUS_CHANGED

Notifies the client driver that the hot-plug detect status of the DisplayPort connection has changed so that the driver can perform additional tasks.
IOCTL_UCMTCPCI_PORT_CONTROLLER_GET_CONTROL

Gets the values of all control registers defined as per the Universal Serial Bus Type-C Port Controller Interface Specification.
IOCTL_UCMTCPCI_PORT_CONTROLLER_GET_STATUS

Gets values of all status registers as per the Universal Serial Bus Type-C Port Controller Interface Specification. The client driver must retrieve the values of the CC_STATUS, POWER_STATUS, and FAULT_STATUS registers.
IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_COMMAND

Sets the value of a command register defined as per the Universal Serial Bus Type-C Port Controller Interface Specification.
IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_CONFIG_STANDARD_OUTPUT

Sets the CONFIG_STANDARD_OUTPUT Register defined as per the Universal Serial Bus Type-C Port Controller Interface Specification.
IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_CONTROL

Sets the value of a control register defined as per the Universal Serial Bus Type-C Port Controller Interface Specification.
IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_MESSAGE_HEADER_INFO

Sets the value of the MESSAGE_HEADER_INFO Register defined as per the Universal Serial Bus Type-C Port Controller Interface Specification.
IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_RECEIVE_DETECT

Sets the RECEIVE_DETECT Register defined as per the Universal Serial Bus Type-C Port Controller Interface Specification.
IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_TRANSMIT

Sets the TRANSMIT Register defined as per the Universal Serial Bus Type-C Port Controller Interface Specification.
IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_TRANSMIT_BUFFER

Sets the TRANSMIT_BUFER Register defined as per the Universal Serial Bus Type-C Port Controller Interface Specification.
IOCTL_UCMUCSI_PPM_GET_UCSI_DATA_BLOCK

Learn more about: IOCTL_UCMUCSI_PPM_GET_UCSI_DATA_BLOCK IOCTL
IOCTL_UCMUCSI_PPM_SEND_UCSI_DATA_BLOCK

Sends a UCSI data block to the client driver.
IOCTL_USB_DIAG_IGNORE_HUBS_OFF

The IOCTL_USB_DIAG_IGNORE_HUBS_OFF I/O control has been deprecated. Do not use.
IOCTL_USB_DIAG_IGNORE_HUBS_ON

The IOCTL_USB_DIAG_IGNORE_HUBS_ON I/O control has been deprecated. Do not use.
IOCTL_USB_DIAGNOSTIC_MODE_OFF

The IOCTL_USB_DIAGNOSTIC_MODE_OFF I/O control has been deprecated. Do not use.
IOCTL_USB_DIAGNOSTIC_MODE_ON

The IOCTL_USB_DIAGNOSTIC_MODE_ON I/O control has been deprecated. Do not use.
IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION

The IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION I/O control request retrieves one or more descriptors for the device that is associated with the indicated port index.IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION is a user-mode I/O control request.
IOCTL_USB_GET_DEVICE_CHARACTERISTICS

The client driver sends this request to determine general characteristics about a USB device, such as maximum send and receive delays for any request.
IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC

The IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC IOCTL function gets the system query performance counter (QPC) value for a specific frame and microframe.
IOCTL_USB_GET_HUB_CAPABILITIES

The IOCTL_USB_GET_HUB_CAPABILITIES I/O control request retrieves the capabilities of a USB hub.
IOCTL_USB_GET_HUB_CAPABILITIES_EX

The IOCTL_USB_GET_HUB_CAPABILITIES_EX I/O control request retrieves the capabilities of a USB hub.IOCTL_USB_GET_HUB_CAPABILITIES_EX is a user-mode I/O control request. This request targets the USB hub device (GUID_DEVINTERFACE_USB_HUB).
IOCTL_USB_GET_HUB_INFORMATION_EX

The IOCTL_USB_GET_HUB_INFORMATION_EX I/O control request is sent by an application to retrieve information about a USB hub in a USB_HUB_INFORMATION_EX structure.The request retrieves the highest port number on the hub.
IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES

The IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES I/O control request retrieves the Microsoft-extended port attributes for a specific port.
IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME

The IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME I/O control request retrieves the driver registry key name that is associated with the device that is connected to the indicated port.
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION

The IOCTL_USB_GET_NODE_CONNECTION_INFORMATION request retrieves information about the indicated USB port and the device that is attached to the port, if there is one.Client drivers must send this IOCTL at an IRQL of PASSIVE_LEVEL.IOCTL_USB_GET_NODE_CONNECTION_INFORMATION is a user-mode I/O control request. This request targets the USB hub device (GUID_DEVINTERFACE_USB_HUB). Do not send this request to the root hub.
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX

The IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX request retrieves information about a USB port and the device that is attached to the port, if there is one.Client drivers must send this IOCTL at an IRQL of PASSIVE_LEVEL.IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX is a user-mode I/O control request. This request targets the USB hub device (GUID_DEVINTERFACE_USB_HUB). Do not send this request to the root hub.
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2

The IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 I/O control is sent by an application to retrieve information about the protocols that are supported by a particular USB port on a hub. The request also retrieves the speed capability of the port.
IOCTL_USB_GET_NODE_CONNECTION_NAME

The IOCTL_USB_GET_NODE_CONNECTION_NAME I/O control request is used with the USB_NODE_CONNECTION_NAME structure to retrieve the symbolic link name of the hub that is attached to the downstream port.IOCTL_USB_GET_NODE_CONNECTION_NAME is a user-mode I/O control request. This request targets the USB hub device (GUID_DEVINTERFACE_USB_HUB).
IOCTL_USB_GET_NODE_INFORMATION

The IOCTL_USB_GET_NODE_INFORMATION I/O control request is used with the USB_NODE_INFORMATION structure to retrieve information about a parent device.IOCTL_USB_GET_NODE_INFORMATION is a user-mode I/O control request.
IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES

The IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES I/O control request is sent by an application to retrieve information about a specific port on a USB hub.
IOCTL_USB_GET_ROOT_HUB_NAME

The IOCTL_USB_GET_ROOT_HUB_NAME I/O control request is used with the USB_ROOT_HUB_NAME structure to retrieve the symbolic link name of the root hub.IOCTL_USB_GET_ROOT_HUB_NAME is a user-mode I/O control request.
IOCTL_USB_GET_TRANSPORT_CHARACTERISTICS

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

The IOCTL_USB_HCD_DISABLE_PORT IOCTL has been deprecated. Do not use.
IOCTL_USB_HCD_ENABLE_PORT

The IOCTL_USB_HCD_ENABLE_PORT IOCTL has been deprecated. Do not use.
IOCTL_USB_HCD_GET_STATS_1

The IOCTL_USB_HCD_GET_STATS_1 IOCTL has been deprecated. Do not use.
IOCTL_USB_HCD_GET_STATS_2

The IOCTL_USB_HCD_GET_STATS_2 IOCTL has been deprecated. Do not use.
IOCTL_USB_HUB_CYCLE_PORT

The IOCTL_USB_HUB_CYCLE_PORT I/O control request power-cycles the port that is associated with the PDO that receives the request.
IOCTL_USB_NOTIFY_ON_TRANSPORT_CHARACTERISTICS_CHANGE

This request notifies the caller of change in transport characteristics.
IOCTL_USB_REGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE

This request registers for notifications about the changes in transport characteristics.
IOCTL_USB_RESET_HUB

The IOCTL_USB_RESET_HUB IOCTL is used by the USB driver stack. Do not use.
IOCTL_USB_START_TRACKING_FOR_TIME_SYNC

This request registers the caller with USB driver stack for time sync services.
IOCTL_USB_STOP_TRACKING_FOR_TIME_SYNC

This request unegisters the caller with USB driver stack for time sync services.
IOCTL_USB_UNREGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE

This request unregisters the caller from getting notifications about transport characteristics changes.

Enumerations

 
CONTROLLER_TYPE

This enumeration specifies if the USB host controller is an eXtensible Host Controller Interface (xHCI) controller.
ENDPOINT_RESET_FLAGS

Defines parameters for a request to reset an endpoint.
TRISTATE

The TRISTATE enumeration indicates generic state values for true or false.
UCM_CHARGING_STATE

Defines the charging state of a Type-C connector.
UCM_PD_CONN_STATE

Defines power delivery (PD) negotiation states of a Type-C port.
UCM_PD_POWER_DATA_OBJECT_TYPE

Defines Power Data Object types.
UCM_POWER_ROLE

Defines power roles of USB Type-C connected devices.
UCM_TYPEC_CURRENT

Defines different Type-C current levels, as defined in the Type-C specification.
UCM_TYPEC_OPERATING_MODE

Defines operating modes of a USB Type-C connector.
UCM_TYPEC_PARTNER

Defines the state of the Type-C connector.
UCMTCPCI_PORT_CONTROLLER_ALERT_TYPE

Defines generic alert values that are used to indicate the type of hardware alert received on the port controller.
UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS

Defines values to determine whether a display out status for a DisplayPort device is enabled.
UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_HPD_STATUS

Defines values to determine whether a DisplayPort device is plugged in.
UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_PIN_ASSIGNMENT

Learn more about: _UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_PIN_ASSIGNMENT enumeration
UCMTCPCI_PORT_CONTROLLER_IOCTL

Defines the various device I/O control requests that are sent to the client driver for the port controller. This indicates the type of IOCTL in WPP.
UCMUCSI_PPM_IOCTL

Defines I/O control codes handled by the client driver.
UCMUCSIFUNCENUM

Defines values for all export functions called by a client driver of a UcmUcsiCx class extension.
UCSI_BATTERY_CHARGING_STATUS

See Table 4-42, Offset 64.
UCSI_COMMAND

See Table 4-51, Command Code.
UCSI_CONNECTOR_PARTNER_FLAGS

Used in the GET_CONNECTOR_STATUS command. See Table 4-42, Offset 21.
UCSI_CONNECTOR_PARTNER_TYPE

Used in the GET_CONNECTOR_STATUS command. See Table 4-42, Offset 29.
UCSI_GET_ALTERNATE_MODES_RECIPIENT

Used in the GET_ALTERNATE_MODES command. See Table 4-24, Offset 16.
UCSI_GET_PDOS_SOURCE_CAPABILITIES_TYPE

Used in the GET_PDOS command. See Table 4-34, Offset 35.
UCSI_GET_PDOS_TYPE

Used in the GET_PDOS command. See Table 4-34, Offset 34.
UCSI_POWER_DIRECTION

Used in the GET_CONNECTOR_STATUS command. See Table 4-42, Offset 20.
UCSI_POWER_DIRECTION_MODE

Used in the GET_CONNECTOR_STATUS command. See Table 4-42, Offset 20.
UCSI_POWER_DIRECTION_ROLE

Used in the SET_PDR command. See Table 4-22, Offset 23.
UCSI_POWER_OPERATION_MODE

Used in the GET_CONNECTOR_STATUS command. See Table 4-42, Offset 16.
UCSI_USB_OPERATION_MODE

Used in the SET_UOR command. See Table 4-18, Offset 23.
UCSI_USB_OPERATION_ROLE

Used in the SET_UOR command. See Table 4-20, Offset 23
UCX_CONTROLLER_ENDPOINT_CHARACTERISTIC_PRIORITY

Indicates the priority of endpoints.
UCX_CONTROLLER_PARENT_BUS_TYPE

The UCX_CONTROLLER_PARENT_BUS_TYPE enumeration defines the parent bus type.
UCX_CONTROLLER_STATE

This enumeration provides values to specify the UCX controller state after a reset.
UCX_ENDPOINT_CHARACTERISTIC_TYPE

Defines values that indicates the type of endpoint characteristic.
UCX_USBDEVICE_CHARACTERISTIC_TYPE

Defines values that indicates the type of device characteristic.
UCX_USBDEVICE_RECOVERY_ACTION

Defines values for FLDR and PLDR trigger resets.
UDECX_ENDPOINT_TYPE

Defines values for endpoint types supported by a virtual USB device.
UDECX_ENDPOINTS_CONFIGURE_TYPE

Defines values for endpoint configuration options.
UDECX_USB_DEVICE_FUNCTION_POWER

Defines values for function wake capability of a virtual USB 3.0 device.
UDECX_USB_DEVICE_SPEED

Defines values for USB device speeds.
UDECX_USB_DEVICE_WAKE_SETTING

Defines values for remote wake capability of a virtual USB device.
UDECX_WDF_DEVICE_RESET_ACTION

Defines values that indicate the types of reset operation supported by an emulated USB host controller.
UDECX_WDF_DEVICE_RESET_TYPE

Defines values that indicates the type of reset for a UDE device.
UFX_CLASS_FUNCTIONS

Learn more about: _UFX_CLASS_FUNCTIONS enumeration
URS_HARDWARE_EVENT

Defines values for the hardware events that a client driver for a USB dual-role controller can report.
URS_HOST_INTERFACE_TYPE

Defines values for the various types of USB host controllers.
URS_ROLE

Defines values for roles supported by a USB dual-role controller.
USB_CONNECTION_STATUS

The USB_CONNECTION_STATUS enumerator indicates the status of the connection to a device on a USB hub port.
USB_CONTROLLER_FLAVOR

The USB_CONTROLLER_FLAVOR enumeration specifies the type of USB host controller.
USB_DEVICE_SPEED

The USB_DEVICE_SPEED enumeration defines constants for USB device speeds.
USB_HUB_NODE

The USB_HUB_NODE enumerator indicates whether a device is a hub or a composite device.
USB_HUB_TYPE

The USB_HUB_TYPE enumeration defines constants that indicate the type of USB hub. The hub type is retrieved by the IOCTL_USB_GET_HUB_INFORMATION_EX I/O control request.
USB_NOTIFICATION_TYPE

Learn more about: _USB_NOTIFICATION_TYPE enumeration
USBC_CHARGING_STATE

Learn how USBC_CHARGING_STATE defines the charging state of a Type-C connector.
USBC_CURRENT

Learn how USBC_CURRENT defines different Type-C current levels, as defined in the Type-C specification.
USBC_DATA_ROLE

Defines data roles of USB Type-C connected devices.
USBC_PARTNER

Defines values for the type of connector partner detected on the USB Type-C connector.
USBC_PD_AUGMENTED_POWER_DATA_OBJECT_TYPE

Learn how USBC_PD_AUGMENTED_POWER_DATA_OBJECT_TYPE defines augmented power data object (APDO) types.
USBC_PD_CONN_STATE

Learn how USBC_PD_CONN_STATE defines power delivery (PD) negotiation states of a Type-C port.
USBC_PD_POWER_DATA_OBJECT_TYPE

Learn how USBC_PD_POWER_DATA_OBJECT_TYPE defines power data object (PDO) types.
USBC_POWER_ROLE

Learn how USBC_POWER_ROLE defines power roles of USB Type-C connected devices.
USBC_TYPEC_OPERATING_MODE

Learn how USBC_TYPEC_OPERATING_MODE defines operating modes of a USB Type-C connector.
USBC_UCSI_SET_POWER_LEVEL_C_CURRENT

Defines values for current power operation mode.
USBD_ENDPOINT_OFFLOAD_MODE

Defines values for endpoint offloading options in the USB device or host controller.
USBD_PIPE_TYPE

The USBD_PIPE_TYPE enumerator indicates the type of pipe.
USBFN_ACTION

Defines special actions UFX should take when the client driver calls the UfxDevicePortDetectCompleteEx function.
USBFN_ATTACH_ACTION

Defines the actions that the Universal Serial Bus (USB) function stack takes when a device is attached to a USB port.
USBFN_BUS_SPEED

The USBFN_BUS_SPEED enumeration defines possible bus speeds.
USBFN_DEVICE_STATE

Defines the Universal Serial Bus (USB) device states for the device/controller. These states correspond to the USB device states as defined in section 9.1 of the USB 2.0 Specification.
USBFN_DIRECTION

Defines the USB data transfer direction types.
USBFN_EVENT

Defines notifications sent to class drivers.
USBFN_PORT_TYPE

Defines the possible port types that can be returned by the client driver during port detection.
USBPM_ACCESS_TYPE

Defines the access types for calling Policy Manager functions.
USBPM_ASSIGN_POWER_LEVEL_PARAMS_FORMAT

Defines format values used in USBPM_ASSIGN_CONNECTOR_POWER_LEVEL_PARAMS.
USBPM_EVENT_TYPE

Defines values for types of events.

Functions

 
COMPOSITE_DEVICE_CAPABILITIES_INIT

The COMPOSITE_DEVICE_CAPABILITIES_INIT macro initializes the COMPOSITE_DEVICE_CAPABILITIES structure.
EVT_UCM_CONNECTOR_SET_DATA_ROLE

The client driver's implementation of the EVT_UCM_CONNECTOR_SET_DATA_ROLE event callback function that swaps the data role of the connector to the specified role when attached to a partner connector.
EVT_UCM_CONNECTOR_SET_POWER_ROLE

The client driver's implementation of the EVT_UCM_CONNECTOR_SET_POWER_ROLE event callback function that sets the power role of the connector to the specified role when attached to a partner connector.
EVT_UCX_CONTROLLER_GET_CURRENT_FRAMENUMBER

The client driver's implementation that UCX calls to retrieve the current 32-bit frame number.
EVT_UCX_CONTROLLER_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC

UCX invokes this callback to retrieves the system query performance counter (QPC) value synchronized with the frame and microframe.
EVT_UCX_CONTROLLER_GET_TRANSPORT_CHARACTERISTICS

UCX invokes this callback to retrieve the host controller characteristics.
EVT_UCX_CONTROLLER_QUERY_USB_CAPABILITY

The client driver's implementation to determine if the controller supports a specific capability.
EVT_UCX_CONTROLLER_RESET

The client driver's implementation that UCX calls to reset the controller.
EVT_UCX_CONTROLLER_SET_TRANSPORT_CHARACTERISTICS_CHANGE_NOTIFICATION

UCX invokes this callback function to specify its preference in transport characteristics for which the client driver must send notifications when changes occur.
EVT_UCX_CONTROLLER_START_TRACKING_FOR_TIME_SYNC

UCX invokes this callback function to the start time tracking functionality in the controller.
EVT_UCX_CONTROLLER_STOP_TRACKING_FOR_TIME_SYNC

UCX invokes this callback function to the stop time tracking functionality in the controller.
EVT_UCX_CONTROLLER_USBDEVICE_ADD

The client driver's implementation that UCX calls when a new USB device is detected.
EVT_UCX_DEFAULT_ENDPOINT_UPDATE

The client driver's implementation that UCX calls with information about the default endpoint.
EVT_UCX_ENDPOINT_ABORT

The client driver's implementation that UCX calls to abort the queue associated with the endpoint.
EVT_UCX_ENDPOINT_GET_ISOCH_TRANSFER_PATH_DELAYS

UCX invokes this callback function to get information about transfer path delays for an isochronous endpoint.
EVT_UCX_ENDPOINT_OK_TO_CANCEL_TRANSFERS

The client driver's implementation that UCX calls to notify the controller driver that it can complete cancelled transfers on the endpoint.
EVT_UCX_ENDPOINT_PURGE

The client driver's implementation that completes all outstanding I/O requests on the endpoint.
EVT_UCX_ENDPOINT_RESET

The client driver's implementation that UCX calls to reset the controller's programming for an endpoint.
EVT_UCX_ENDPOINT_SET_CHARACTERISTIC

UCX invokes this callback function to set the priority on an endpoint.
EVT_UCX_ENDPOINT_START

The client driver's implementation that UCX calls to start the queue associated with the endpoint.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD

The client driver's implementation that UCX calls to create static streams.
EVT_UCX_ENDPOINT_STATIC_STREAMS_DISABLE

The client driver's implementation that UCX calls to release controller resources for all streams for an endpoint.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE

The client driver's implementation that UCX calls to enable the static streams.
EVT_UCX_ROOTHUB_CONTROL_URB

The client driver uses this callback type to implement handlers that UCX calls when it receives feature control requests on the USB hub.
EVT_UCX_ROOTHUB_GET_20PORT_INFO

The client driver's implementation that UCX calls when it receives a request for information about USB 2.0 ports on the root hub.
EVT_UCX_ROOTHUB_GET_30PORT_INFO

The client driver's implementation that UCX calls when it receives a request for information about USB 3.0 ports on the root hub.
EVT_UCX_ROOTHUB_GET_INFO

The client driver's implementation that UCX calls when it receives a request for information about the root hub.
EVT_UCX_ROOTHUB_INTERRUPT_TX

The client driver's implementation that UCX calls when it receives a request for information about changed ports.
EVT_UCX_USBDEVICE_ADDRESS

The client driver's implementation that UCX calls to address the USB device.
EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD

The client driver's implementation that UCX calls to add a new default endpoint for a USB device.
EVT_UCX_USBDEVICE_DISABLE

The client driver's implementation that UCX calls to release controller resources associated with the device and its default endpoint.
EVT_UCX_USBDEVICE_ENABLE

The client driver's implementation that UCX calls to program information about the device and its default control endpoint into the controller.
EVT_UCX_USBDEVICE_ENDPOINT_ADD

The client driver's implementation that UCX calls to add a new endpoint for a USB device.
EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE

The client driver's implementation that UCX calls to configure endpoints in the controller.
EVT_UCX_USBDEVICE_GET_CHARACTERISTIC

UCX invokes this callback to retrieve the device characteristics.
EVT_UCX_USBDEVICE_HUB_INFO

The client driver's implementation that UCX calls to retrieve hub properties.
EVT_UCX_USBDEVICE_RESET

The client driver's implementation that UCX calls when the port to which the device is attached is reset.
EVT_UCX_USBDEVICE_RESUME

UCX invokes this callback function to resume a device from suspend state.
EVT_UCX_USBDEVICE_SUSPEND

UCX invokes this callback function to send a device suspend state.
EVT_UCX_USBDEVICE_UPDATE

The client driver's implementation that UCX calls to update device properties.
EVT_UDECX_USB_DEVICE_D0_ENTRY

The USB device emulation class extension (UdeCx) invokes this callback function when it gets a request to bring the virtual USB device out of a low power state to working state.
EVT_UDECX_USB_DEVICE_D0_EXIT

The USB device emulation class extension (UdeCx) invokes this callback function when it gets a request to send the virtual USB device to a low power state.
EVT_UDECX_USB_DEVICE_DEFAULT_ENDPOINT_ADD

The USB device emulation class extension (UdeCx) invokes this callback function to request the client driver to create the default control endpoint on the virtual USB device.
EVT_UDECX_USB_DEVICE_ENDPOINT_ADD

The USB device emulation class extension (UdeCx) invokes this callback function to request the client driver to create a dynamic endpoint on the virtual USB device.
EVT_UDECX_USB_DEVICE_ENDPOINTS_CONFIGURE

The USB device emulation class extension (UdeCx) invokes this callback function to change the configuration by selecting an alternate setting, disabling current endpoints, or adding dynamic endpoints.
EVT_UDECX_USB_DEVICE_SET_FUNCTION_SUSPEND_AND_WAKE

The USB device emulation class extension (UdeCx) invokes this callback function when it gets a request to change the function state of the specified interface of the virtual USB 3.0 device.
EVT_UDECX_USB_ENDPOINT_PURGE

The USB device emulation class extension (UdeCx) invokes this callback function to stop queuing I/O requests to the endpoint's queue and cancel unprocessed requests.
EVT_UDECX_USB_ENDPOINT_RESET

The USB device emulation class extension (UdeCx) invokes this callback function to reset an endpoint of the virtual USB device.
EVT_UDECX_USB_ENDPOINT_START

The USB device emulation class extension (UdeCx) invokes this callback function to start processing I/O requests on the specified endpoint of the virtual USB device.
EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY

The UDE client driver's implementation to determine the capabilities that are supported by the emulated USB host controller.
EVT_UDECX_WDF_DEVICE_RESET

The UDE client driver's implementation to reset the emulated host controller or the devices attached to it.
EVT_UFX_DEVICE_ADDRESSED

The client driver's implementation to assign an address on the function controller.
EVT_UFX_DEVICE_CONTROLLER_RESET

The client driver's implementation to reset the function controller to its initial state.
EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD

The client driver's implementation to create a default control endpoint.
EVT_UFX_DEVICE_ENDPOINT_ADD

The client driver's implementation to create a default endpoint object.
EVT_UFX_DEVICE_HOST_CONNECT

The client driver's implementation to initiate connection with the host.
EVT_UFX_DEVICE_HOST_DISCONNECT

The client driver's implementation to disable the function controller's communication with the host.
EVT_UFX_DEVICE_PORT_CHANGE

The client driver's implementation to update the type of the new port to which the USB device is connected.
EVT_UFX_DEVICE_PORT_DETECT

The client driver's implementation to initiate port detection.
EVT_UFX_DEVICE_PROPRIETARY_CHARGER_DETECT

The client driver's implementation to initiate proprietary charger detection.
EVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESET

The client driver's implementation to resets proprietary charger.
EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTY

The client driver's implementation to set charger information that it uses to enable charging over USB.
EVT_UFX_DEVICE_REMOTE_WAKEUP_SIGNAL

The client driver's implementation to initiate remote wake-up on the function controller.
EVT_UFX_DEVICE_SUPER_SPEED_POWER_FEATURE

The client driver's implementation to set or clear the specified power feature on the function controller.
EVT_UFX_DEVICE_TEST_MODE_SET

The client driver's implementation to set the test mode of the function controller.
EVT_UFX_DEVICE_TESTHOOK

This IOCTL code is not supported.
EVT_UFX_DEVICE_USB_STATE_CHANGE

The client driver's implementation to update the state of the USB device.
EVT_URS_DEVICE_FILTER_RESOURCE_REQUIREMENTS

The USB dual-role class extension invokes this callback to allow the client driver to insert the resources from the resource-requirements-list object to resource lists that will be used during the life time of each role.
EVT_URS_SET_ROLE

The URS class extension invokes this event callback when it requires the client driver to change the role of the controller.
EVT_USBPM_EVENT_CALLBACK

Sends notifications about hub arrival/removal and connector state changes.
GET_ISO_URB_SIZE

The GET_ISO_URB_SIZE macro returns the number of bytes required to hold an isochronous transfer request.
PUSB_BUSIFFN_ENUM_LOG_ENTRY

This callback function is not supported. The EnumLogEntry routine makes a log entry.
PUSB_BUSIFFN_GETUSBDI_VERSION

The GetUSBDIVersion routine returns the USB interface version number and the version number of the USB specification that defines the interface, along with information about host controller capabilities.
PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED

The USB_BUSIFFN_IS_DEVICE_HIGH_SPEED routine returns TRUE if the device is operating at high speed.
PUSB_BUSIFFN_QUERY_BUS_INFORMATION

The QueryBusInformation routine gets information about the bus.
PUSB_BUSIFFN_QUERY_BUS_TIME

The QueryBusTime function gets the current 32-bit USB frame number.
PUSB_BUSIFFN_QUERY_BUS_TIME_EX

The QueryBusTimeEx routine gets the current 32-bit USB micro-frame number.
PUSB_BUSIFFN_QUERY_CONTROLLER_TYPE

The QueryControllerType routine gets information about the USB host controller to which the USB device is attached.
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB

This callback function is not supported.The SubmitIsoOutUrb function submits a USB request block (URB) directly to the bus driver without requiring the allocation of an IRP.
UCM_CONNECTOR_CONFIG_INIT

Initializes a UCM_CONNECTOR_CONFIG structure.
UCM_CONNECTOR_PD_CONFIG_INIT

Initializes a UCM_CONNECTOR_PD_CONFIG structure.
UCM_CONNECTOR_PD_CONN_STATE_CHANGED_PARAMS_INIT

Initializes a UCM_CONNECTOR_PD_CONN_STATE_CHANGED_PARAMS structure.
UCM_CONNECTOR_TYPEC_ATTACH_PARAMS_INIT

Initializes a UCM_CONNECTOR_TYPEC_ATTACH_PARAMS structure.
UCM_CONNECTOR_TYPEC_CONFIG_INIT

Initializes the UCM_CONNECTOR_TYPEC_CONFIG structure.
UCM_MANAGER_CONFIG_INIT

Initializes a UCM_MANAGER_CONFIG structure.
UCM_PD_POWER_DATA_OBJECT_GET_TYPE

Retrieves the type of Power Data Object from the UCM_PD_POWER_DATA_OBJECT structure.
UCM_PD_POWER_DATA_OBJECT_INIT_BATTERY

Initializes a UCM_PD_POWER_DATA_OBJECT structure as a Battery Supply type Power Data Object.
UCM_PD_POWER_DATA_OBJECT_INIT_FIXED

Initializes a to the UCM_PD_POWER_DATA_OBJECT for a Fixed Supply type Power Data Object.
UCM_PD_POWER_DATA_OBJECT_INIT_ULONG

Initializes a UCM_PD_POWER_DATA_OBJECT structure by interpreting Power Data Object values and sets each field correctly.
UCM_PD_POWER_DATA_OBJECT_INIT_VARIABLE_NON_BATTERY

Initializes a UCM_PD_POWER_DATA_OBJECT structure as a Variable Supply Non Battery type Power Data Object.
UCM_PD_REQUEST_DATA_OBJECT_INIT_ULONG

Initializes a UCM_PD_REQUEST_DATA_OBJECT structure by interpreting Request Data Object values and sets each field correctly.
UcmConnectorChargingStateChanged

Notifies the USB connector manager framework extension (UcmCx) with the updated charging state of the partner connector.
UcmConnectorCreate

Creates a connector object.
UcmConnectorDataDirectionChanged

Notifies the USB connector manager framework extension (UcmCx) with the new data role of a change in data role.
UcmConnectorPdConnectionStateChanged

Notifies the USB connector manager framework extension (UcmCx) with the connection capabilities of the currently negotiated PD contract (if any).
UcmConnectorPdPartnerSourceCaps

Notifies the USB connector manager framework extension (UcmCx) with the power source capabilities of the partner connector.
UcmConnectorPdSourceCaps

Notifies the USB connector manager framework extension (UcmCx) with the power source capabilities of the connector.
UcmConnectorPowerDirectionChanged

Notifies the USB connector manager framework extension (UcmCx) with the new power role of the partner connector.
UcmConnectorTypeCAttach

Notifies the USB connector manager framework extension (UcmCx) when a partner connector is attached.
UcmConnectorTypeCCurrentAdChanged

Notifies the USB connector manager framework extension (UcmCx) when the specified connector changes the current advertisement. Either the connector changes it (when it is DFP/Source), or the partner changed it (when it is UFP/Sink).
UcmConnectorTypeCDetach

Notifies the USB connector manager framework extension (UcmCx) when the partner connector detaches from the specified Type-C connector.
UcmInitializeDevice

Initializes the USB connector manager framework extension (UcmCx).
UCMTCPCI_DEVICE_CONFIG_INIT

Initializes the UCMTCPCI_DEVICE_CONFIG structure.
UCMTCPCI_PORT_CONTROLLER_ALERT_DATA_INIT

Initializes the UCMTCPCI_PORT_CONTROLLER_ALERT_DATA structure.
UCMTCPCI_PORT_CONTROLLER_CAPABILITIES_INIT

Initializes the UCMTCPCI_PORT_CONTROLLER_CAPABILITIES structure.
UCMTCPCI_PORT_CONTROLLER_CONFIG_INIT

Initializes the UCMTCPCI_PORT_CONTROLLER_CONFIG structure.
UCMTCPCI_PORT_CONTROLLER_IDENTIFICATION_INIT

Initializes the UCMTCPCI_PORT_CONTROLLER_IDENTIFICATION structure.
UcmTcpciDeviceInitialize

Initializes the USB Type-C Port Controller Interface framework extension (UcmTcpciCx).
UcmTcpciDeviceInitInitialize

Initializes device initialization operations when the Plug and Play (PnP) manager reports the existence of a device.
UcmTcpciPortControllerAlert

Sends information about the hardware alerts that are received on the port controller to UcmTcpciCx.
UcmTcpciPortControllerCreate

Creates a port controller object to register with UcmTcpciCx.
UcmTcpciPortControllerSetHardwareRequestQueue

Assigns a framework queue object to which the UcmTcpciCx dispatches hardware requests for the port controller.
UcmTcpciPortControllerStart

Indicates to the UcmTcpciCx class extension that the client driver is now ready to service hardware requests for the port controller.
UcmTcpciPortControllerStop

Indicates to the UcmTcpciCx class extension to stop sending hardware requests to the port controller object.
UCMUCSI_CONNECTOR_INFO_INIT

Initializes a UCMUCSI_CONNECTOR_INFO structure.
UCMUCSI_DEVICE_CONFIG_INIT

Initializes a UCMUCSI_DEVICE_CONFIG structure.
UCMUCSI_PPM_CONFIG_INIT

Initializes a UCMUCSI_PPM_CONFIG structure.
UcmUcsiConnectorCollectionAddConnector

Adds a connector to the connector collection object.
UcmUcsiConnectorCollectionCreate

Creates a connector collection object with UcmUcsiCx.
UcmUcsiDeviceInitialize

Initializes the UCSI extension (UcmUcsiCx).
UcmUcsiDeviceInitInitialize

Intializes the WDFDEVICE_INIT provided by the framework.
UcmUcsiPpmCreate

Creates a Platform Policy Manager (PPM) object.
UcmUcsiPpmNotification

Informs the UcmUcsiCx class extension about a UCSI notification.
UcmUcsiPpmSetUcsiCommandRequestQueue

Provides a framework queue object that is used to dispatch UCSI commands to the client driver.
UcmUcsiPpmStart

Instructs the class extension to start sending requests to the client driver.
UcmUcsiPpmStop

Instructs the class extension to stop sending requests to the client driver.
UCSI_CMD_SUCCEEDED

On successful completion of a UCSI command the PPM firmware fills the CCI Data Structure provided by the client driver.
UCX_CONTROLLER_CONFIG_SET_ACPI_INFO

Initializes a UCX_CONTROLLER_CONFIG structure with the specified values for the controller with ACPI as the parent.
UCX_CONTROLLER_CONFIG_SET_PCI_INFO

Initializes a UCX_CONTROLLER_CONFIG structure with the specified values for the controller with PCI as the parent bus type.
UCX_DEFAULT_ENDPOINT_EVENT_CALLBACKS_INIT

Initializes a UCX_DEFAULT_ENDPOINT_EVENT_CALLBACKS structure with client driver's callback functions. The client driver calls this function before calling UcxEndpointCreate method to create an endpoint and register its callback functions with UCX.
UCX_ENDPOINT_EVENT_CALLBACKS_INIT

Initializes a UCX_ENDPOINT_EVENT_CALLBACKS structure with client driver's callback functions. The client driver calls this function before calling UcxEndpointCreate method to create an endpoint and register its callback functions with UCX.
UCX_USBDEVICE_EVENT_CALLBACKS_INIT

Initializes a UCX_USBDEVICE_EVENT_CALLBACKS structure with the function pointers to client driver's callback functions.
UcxControllerCreate

Creates a host controller object.
UcxControllerNeedsReset

Initiates a non-Plug and Play (PnP) controller reset operation by queuing an event into the controller reset state machine.
UcxControllerNotifyTransportCharacteristicsChange

Notifies UCX about a new port change event from host controller.
UcxControllerResetComplete

Informs USB host controller extension (UCX) that the reset operation has competed.
UcxControllerSetFailed

Informs USB Host Controller Extension (UCX) that the controller has encountered a critical failure.
UcxControllerSetIdStrings

Updates the identifier strings of a controller after the controller has been initialized.
UcxDefaultEndpointInitSetEventCallbacks

Initializes a UCXENDPOINT_INIT structure with client driver's event callback functions related to the default endpoint.
UcxEndpointAbortComplete

Notifies UCX that a transfer abort operation has been completed on the specified endpoint object.
UcxEndpointCreate

Creates an endpoint on the specified USB device object.
UcxEndpointGetStaticStreamsReferenced

Returns a referenced static streams object for the specified endpoint.
UcxEndpointInitSetEventCallbacks

Initializes a UCXENDPOINT_INIT structure with client driver's event callback functions related to endpoints on the device.
UcxEndpointNeedToCancelTransfers

The client driver calls this method before it cancels transfers on the wire.
UcxEndpointNoPingResponseError

Notifies UCX about a "No Ping Response" error for a transfer on the specified endpoint object.
UcxEndpointPurgeComplete

Notifies UCX that a purge operation has been completed on the specified endpoint object.
UcxEndpointSetWdfIoQueue

Sets a framework queue on the specified endpoint object.
UcxInitializeDeviceInit

UcxInitializeDeviceInit initializes device initialization operations when the Plug and Play (PnP) manager reports the existence of a device.
UcxIoDeviceControl

Allows USB host controller extension (UCX) to handle an I/O control code (IOCTL) request from user mode.
UcxRootHubPortChanged

Notifies UCX about a new port change event on the host controller.
UcxStaticStreamsCreate

Creates a static streams object.
UcxStaticStreamsSetStreamInfo

Sets stream information for each stream enabled by the client driver.
UcxUsbDeviceCreate

Creates a USB device object on the specified controller.
UcxUsbDeviceInitSetEventCallbacks

Initializes a UCXUSBDEVICE_INIT structure with client driver's event callback functions.
UcxUsbDeviceRemoteWakeNotification

Notifies UCX that a remote wake signal from the device is received.
UDECX_USB_DEVICE_CALLBACKS_INIT

Initializes a UDECX_USB_DEVICE_STATE_CHANGE_CALLBACKS structure before a UdecxUsbDeviceCreate call.
UDECX_USB_DEVICE_PLUG_IN_OPTIONS_INIT

Initializes a UDECX_USB_DEVICE_PLUG_IN_OPTIONS structure.
UDECX_USB_ENDPOINT_CALLBACKS_INIT

Initializes a UDECX_USB_ENDPOINT_CALLBACKS structure before a UdecxUsbEndpointCreate call.
UDECX_WDF_DEVICE_CONFIG_INIT

Initializes a UDECX_WDF_DEVICE_CONFIG structure.
UdecxInitializeWdfDeviceInit

UdecxInitializeWdfDeviceInit initializes device initialization operations when the Plug and Play (PnP) manager reports the existence of a device.
UdecxUrbComplete

Completes the URB request with a USB-specific completion status code.
UdecxUrbCompleteWithNtStatus

Completes the URB request with an NTSTATUS code.
UdecxUrbRetrieveBuffer

Retrieves the transfer buffer of an URB from the specified framework request object sent to the endpoint queue.
UdecxUrbRetrieveControlSetupPacket

Retrieves a USB control setup packet from a specified framework request object.
UdecxUrbSetBytesCompleted

Sets the number of bytes transferred for the URB contained within a framework request object.
UdecxUsbDeviceCreate

Creates a USB Device Emulation (UDE) device object.
UdecxUsbDeviceInitAddDescriptor

Adds a USB descriptor to the initialization parameters used to create a virtual USB device.
UdecxUsbDeviceInitAddDescriptorWithIndex

Learn how the UdecxUsbDeviceInitAddDescriptorWithIndex function adds a USB descriptor to the initialization parameters used to create a virtual USB device.
UdecxUsbDeviceInitAddStringDescriptor

Adds a USB string descriptor to the initialization parameters used to create a virtual USB device.
UdecxUsbDeviceInitAddStringDescriptorRaw

Learn how this method adds a USB string descriptor to the initialization parameters used to create a virtual USB device.
UdecxUsbDeviceInitAllocate

Allocates memory for a UDECXUSBDEVICE_INIT structure that is used to initialize a virtual USB device.
UdecxUsbDeviceInitFree

Releases the resources that were allocated by the UdecxUsbDeviceInitAllocate call.
UdecxUsbDeviceInitSetEndpointsType

Indicates the type of endpoint (simple or dynamic) in the initialization parameters that the client driver uses to create the virtual USB device.
UdecxUsbDeviceInitSetSpeed

Sets the USB speed of the virtual USB device to create.
UdecxUsbDeviceInitSetStateChangeCallbacks

Initializes a WDF-allocated structure with pointers to callback functions.
UdecxUsbDeviceLinkPowerEntryComplete

Completes an asynchronous request for bringing the device out of a low power state.
UdecxUsbDeviceLinkPowerExitComplete

Completes an asynchronous request for sending the device to a low power state.
UdecxUsbDevicePlugIn

Notifies the USB device emulation class extension (UdeCx) that the USB device has been plugged in the specified port.
UdecxUsbDevicePlugOutAndDelete

Disconnects the virtual USB device.
UdecxUsbDeviceSetFunctionSuspendAndWakeComplete

Completes an asynchronous request for changing the power state of a particular function of a virtual USB 3.0 device.
UdecxUsbDeviceSignalFunctionWake

Initiates wake up of the specified function from a low power state. This applies to virtual USB 3.0 devices.
UdecxUsbDeviceSignalWake

Initiates wake up from a low link power state for a virtual USB 2.0 device.
UdecxUsbEndpointCreate

Creates a UDE endpoint object.
UdecxUsbEndpointInitFree

Release the resources that were allocated by the UdecxUsbSimpleEndpointInitAllocate call.
UdecxUsbEndpointInitSetCallbacks

Sets pointers to UDE client driver-implemented callback functions in the initialization parameters of the simple endpoint to create.
UdecxUsbEndpointInitSetEndpointAddress

Sets the address of the endpoint in the initialization parameters of the simple endpoint to create.
UdecxUsbEndpointPurgeComplete

Completes an asynchronous request for canceling all I/O requests queued to the specified endpoint.
UdecxUsbEndpointSetWdfIoQueue

Sets a framework queue object with a UDE endpoint.
UdecxUsbSimpleEndpointInitAllocate

Allocates memory for an initialization structure that is used to create a simple endpoint for the specified virtual USB device.
UdecxWdfDeviceAddUsbDeviceEmulation

Initializes a framework device object to support operations related to a host controller and a virtual USB device attached to the controller.
UdecxWdfDeviceNeedsReset

Informs the USB device emulation class extension (UdeCx) that the device needs a reset operation.
UdecxWdfDeviceResetComplete

Informs the USB device emulation class extension (UdeCx) that the reset operation on the specified controller has competed.
UdecxWdfDeviceTryHandleUserIoctl

Attempts to handle an IOCTL request sent by a user-mode software.
UFX_DEVICE_CALLBACKS_INIT

The UFX_DEVICE_CALLBACKS_INIT macro initializes the UFX_DEVICE_CALLBACKS structure.
UFX_DEVICE_CAPABILITIES_INIT

The UFX_DEVICE_CAPABILITIES_INIT macro the initializes the UFX_DEVICE_CAPABILITIES structure.
UFX_ENDPOINT_CALLBACKS_INIT

The UFX_ENDPOINT_CALLBACKS_INIT macro initializes the UFX_ENDPOINT_CALLBACKS structure.
UFX_PROPRIETARY_CHARGER_ABORT_OPERATION

The filter driver's implementation to abort a charger operation.
UFX_PROPRIETARY_CHARGER_DETECT

The filter driver's implementation to detect if a charger is attached and get details about the charger.
UFX_PROPRIETARY_CHARGER_RESET_OPERATION

The filter driver's implementation to reset a charger operation.
UFX_PROPRIETARY_CHARGER_SET_PROPERTY

The filter driver's implementation to set a configurable property on the charger.
UfxDeviceCreate

Creates a UFX device object, registers event callback routines, and specifies capabilities specific to the controller.
UfxDeviceEventComplete

Informs UFX that the client driver has completed processing a UFX callback function.
UfxDeviceIoControl

Passes non-internal IOCTLs from user-mode to UFX.
UfxDeviceIoInternalControl

Passes kernel mode IOCTLs to UFX.
UfxDeviceNotifyAttach

Notifies UFX that the device's USB cable has been attached.
UfxDeviceNotifyDetach

Notifies UFX that the device's USB cable has been detached.
UfxDeviceNotifyFinalExit

Notifies UFX that the device is detached.
UfxDeviceNotifyHardwareFailure

Notifies UFX about a non-recoverable hardware failure in the controller.
UfxDeviceNotifyHardwareReady

Notifies UFX that the hardware is ready.
UfxDeviceNotifyReset

Notifies UFX about a USB bus reset event.
UfxDeviceNotifyResume

Notifies UFX about a USB bus resume event.
UfxDeviceNotifySuspend

Notifies UFX about a USB bus suspend event.
UfxDevicePortDetectComplete

Notifies UFX about the port type that was detected.
UfxDevicePortDetectCompleteEx

Notifies UFX about the port type that was detected, and optionally requests an action.
UfxDeviceProprietaryChargerDetectComplete

Notifies UFX about a detected proprietary port/charger type.
UfxEndpointCreate

Creates an endpoint object.
UfxEndpointGetCommandQueue

Returns the command queue previously created by UfxEndpointCreate.
UfxEndpointGetTransferQueue

Returns the transfer queue previously created by UfxEndpointCreate.
UfxEndpointInitSetEventCallbacks

Initialize a UFXENDPOINT_INIT structure.
UfxEndpointNotifySetup

Notifies UFX when the client driver receives a setup packet from the host.
UfxFdoInit

Initializes the WDFDEVICE_INIT structure that the client driver subsequently provides when it calls WdfDeviceCreate.
URS_CONFIG_INIT

Initializes a URS_CONFIG structure.
UrsDeviceInitialize

Initializes a framework device object to support operations related to a USB dual-role controller and registers the relevant event callback functions with the USB dual-role controller class extension.
UrsDeviceInitInitialize

Learn how this function initializes device initialization operations when the Plug and Play (PnP) manager reports the existence of a device.
UrsIoResourceListAppendDescriptor

Appends the specified resource descriptor to the specified I/O resource list object that maintains resource descriptors for the host or function role.
UrsReportHardwareEvent

Notifies the USB dual-role class extension about a new hardware event.
UrsSetHardwareEventSupport

Indicates the client driver's support for reporting new hardware events.
UrsSetPoHandle

Registers and deletes the client driver's registration with the power management framework (PoFx).
UsbBuildGetStatusRequest

The UsbBuildGetStatusRequest macro formats an URB to obtain status from a device, interface, endpoint, or other device-defined target on a USB device.
UsbBuildInterruptOrBulkTransferRequest

The UsbBuildInterruptOrBulkTransferRequest macro formats an URB to send or receive data on a bulk pipe, or to receive data from an interrupt pipe.
UsbBuildOpenStaticStreamsRequest

The UsbBuildOpenStaticStreamsRequest inline function formats an URB structure for an open-streams request. The request opens streams associated with the specified bulk endpoint.
USBC_PD_POWER_DATA_OBJECT_GET_TYPE

Retrieves the type of Power Data Object (PDO).
USBC_START_DEVICE_CALLBACK

The USBC_START_DEVICE_CALLBACK routine allows a USB client driver to provide a custom definition of the interface collections on a device.
USBD_AssignUrbToIoStackLocation

The USBD_AssignUrbToIoStackLocation routine is called by a client driver to associate an URB with the IRP's next stack location.
USBD_BuildRegisterCompositeDevice

The USBD_BuildRegisterCompositeDevice routine is called by the driver of a USB multi-function device (composite driver) to initialize a REGISTER_COMPOSITE_DEVICE structure with the information required for registering the driver with the USB driver stack.
USBD_CalculateUsbBandwidth

The USBD_CalculateUsbBandwidth routine has been deprecated in Windows XP and later operating systems. Do not use.
USBD_CloseHandle

The USBD_CloseHandle routine is called by a USB client driver to close a USBD handle and release all resources associated with the driver's registration.
USBD_CreateConfigurationRequest

The USBD_CreateConfigurationRequest routine has been deprecated. Use USBD_CreateConfigurationRequestEx instead.
USBD_CreateConfigurationRequestEx

The USBD_CreateConfigurationRequestEx routine allocates and formats a URB to select a configuration for a USB device.USBD_CreateConfigurationRequestEx replaces USBD_CreateConfigurationRequest.
USBD_CreateHandle

The USBD_CreateHandle routine is called by a WDM USB client driver to obtain a USBD handle. The routine registers the client driver with the underlying USB driver stack.
USBD_GetInterfaceLength

The USBD_GetInterfaceLength routine obtains the length of a given interface descriptor, including the length of all endpoint descriptors contained within the interface.
USBD_GetPdoRegistryParameter

The USBD_GetPdoRegistryParameter routine retrieves the value from the specified key in the USB device's hardware registry.
USBD_GetUSBDIVersion

The USBD_GetUSBDIVersion routine returns version information about the host controller driver (HCD) that controls the client's USB device.Note  USBD_IsInterfaceVersionSupported replaces the USBD_GetUSBDIVersion routine
USBD_IsInterfaceVersionSupported

The USBD_IsInterfaceVersionSupported routine is called by a USB client driver to check whether the underlying USB driver stack supports a particular USBD interface version.
USBD_IsochUrbAllocate

The USBD_IsochUrbAllocate routine allocates and formats a URB structure for an isochronous transfer request.
USBD_ParseConfigurationDescriptor

The USBD_ParseConfigurationDescriptor routine has been deprecated. Use USBD_ParseConfigurationDescriptorEx instead.
USBD_ParseConfigurationDescriptorEx

The USBD_ParseConfigurationDescriptorEx routine searches a given configuration descriptor and returns a pointer to an interface that matches the given search criteria.
USBD_ParseDescriptors

The USBD_ParseDescriptors routine searches a given configuration descriptor and returns a pointer to the first descriptor that matches the search criteria.
USBD_QueryBusTime

The USBD_QueryBusTime routine has been deprecated in Windows XP and later operating systems. Do not use.
USBD_QueryUsbCapability

The USBD_QueryUsbCapability routine is called by a WDM client driver to determine whether the underlying USB driver stack and the host controller hardware support a specific capability.
USBD_RegisterHcFilter

The USBD_RegisterHcFilter routine has been deprecated in Windows XP and later operating systems.
USBD_SelectConfigUrbAllocateAndBuild

The USBD_SelectConfigUrbAllocateAndBuild routine allocates and formats a URB structure that is required to select a configuration for a USB device.
USBD_SelectInterfaceUrbAllocateAndBuild

The USBD_SelectInterfaceUrbAllocateAndBuild routine allocates and formats a URB structure that is required for a request to select an interface or change its alternate setting.
USBD_UrbAllocate

The USBD_UrbAllocate routine allocates a USB Request Block (URB).
USBD_UrbFree

The USBD_UrbFree routine releases the URB that is allocated by USBD_UrbAllocate, USBD_IsochUrbAllocate, USBD_SelectConfigUrbAllocateAndBuild, or USBD_SelectInterfaceUrbAllocateAndBuild.
USBD_ValidateConfigurationDescriptor

The USBD_ValidateConfigurationDescriptor routine validates all descriptors returned by a device in its response to a configuration descriptor request.
USBFN_GET_ATTACH_ACTION

The filter driver's implementation that gets invoked when charger is attached to the port.
USBFN_GET_ATTACH_ACTION_ABORT

The filter driver's implementation to abort an attach-detect operation.
USBFN_SET_DEVICE_STATE

The filter driver's implementation to set the device state and operating bus speed.
USBPM_ASSIGN_CONNECTOR_POWER_LEVEL_PARAMS_INIT

Initializes a USBPM_ASSIGN_CONNECTOR_POWER_LEVEL_PARAMS structure.
UsbPm_AssignConnectorPowerLevel

Attempts a PD contract renegotiation with the specified voltage/current/power value.
USBPM_CLIENT_CONFIG_EXTRA_INFO_INIT

Initializes a USBPM_CLIENT_CONFIG_EXTRA_INFO structure.
USBPM_CLIENT_CONFIG_INIT

Initializes a USBPM_CLIENT_CONFIG structure.
USBPM_CONNECTOR_PROPERTIES_INIT

Initializes a USBPM_CONNECTOR_PROPERTIES structure.
USBPM_CONNECTOR_STATE_INIT

Initializes a USBPM_CONNECTOR_STATE_INIT structure.
UsbPm_Deregister

Unregisters the client driver with the Policy Manager.
USBPM_HUB_CONNECTOR_HANDLES_INIT

Initializes a USBPM_HUB_CONNECTOR_HANDLES structure.
USBPM_HUB_PROPERTIES_INIT

Initializes a [USBPM_HUB_PROPERTIES] structure.
UsbPm_Register

Registers the client driver with the Policy Manager to report hub arrival/removal and connector state changes.
UsbPm_RetrieveConnectorProperties

Retrieves the properties of a connector. The properties are static information that do not change during the lifecycle of a connector.
UsbPm_RetrieveConnectorState

Retrieves the current state of a connector. Unlike connector properties, state information is dynamic, which can change at runtime.
UsbPm_RetrieveHubConnectorHandles

Retrieves connector handles for all connectors of a hub.
UsbPm_RetrieveHubProperties

Retrieves the properties of a hub. Properties are static information that do not change during the lifecycle of a hub.

Structures

 
_URB_BULK_OR_INTERRUPT_TRANSFER

The _URB_BULK_OR_INTERRUPT_TRANSFER structure is used by USB client drivers to send or receive data on a bulk pipe or on an interrupt pipe.
_URB_CONTROL_DESCRIPTOR_REQUEST

The _URB_CONTROL_DESCRIPTOR_REQUEST structure is used by USB client drivers to get or set descriptors on a USB device.
_URB_CONTROL_FEATURE_REQUEST

The _URB_CONTROL_FEATURE_REQUEST structure is used by USB client drivers to set or clear features on a device, interface, or endpoint.
_URB_CONTROL_GET_CONFIGURATION_REQUEST

The _URB_CONTROL_GET_CONFIGURATION_REQUEST structure is used by USB client drivers to retrieve the current configuration for a device.
_URB_CONTROL_GET_INTERFACE_REQUEST

The _URB_CONTROL_GET_INTERFACE_REQUEST structure is used by USB client drivers to retrieve the current alternate interface setting for an interface in the current configuration.
_URB_CONTROL_GET_STATUS_REQUEST

The _URB_CONTROL_GET_STATUS_REQUEST structure is used by USB client drivers to retrieve status from a device, interface, endpoint, or other device-defined target.
_URB_CONTROL_TRANSFER

The _URB_CONTROL_TRANSFER structure is used by USB client drivers to transfer data to or from a control pipe.
_URB_CONTROL_TRANSFER_EX

The _URB_CONTROL_TRANSFER_EX structure is used by USB client drivers to transfer data to or from a control pipe, with a timeout that limits the acceptable transfer time.
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST

The _URB_CONTROL_VENDOR_OR_CLASS_REQUEST structure is used by USB client drivers to issue a vendor or class-specific command to a device, interface, endpoint, or other device-defined target.
_URB_GET_CURRENT_FRAME_NUMBER

The _URB_GET_CURRENT_FRAME_NUMBER structure is used by USB client drivers to retrieve the current frame number.
_URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS

The _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS structure is used by USB client drivers to retrieve delays associated with isochronous transfer programming in the host controller and transfer completion so that the client driver can ensure that the device gets the isochronous packets in time.
_URB_HEADER

The _URB_HEADER structure is used by USB client drivers to provide basic information about the request being sent to the host controller driver.
_URB_ISOCH_TRANSFER

The _URB_ISOCH_TRANSFER structure is used by USB client drivers to send data to or retrieve data from an isochronous transfer pipe.
_URB_OPEN_STATIC_STREAMS

The _URB_OPEN_STATIC_STREAMS structure is used by a USB client driver to open streams in the specified bulk endpoint.
_URB_OS_FEATURE_DESCRIPTOR_REQUEST

The _URB_OS_FEATURE_DESCRIPTOR_REQUEST structure is used by the USB hub driver to retrieve Microsoft OS Feature Descriptors from a USB device or an interface on a USB device.
_URB_PIPE_REQUEST

The _URB_PIPE_REQUEST structure is used by USB client drivers to clear a stall condition on an endpoint.
_URB_SELECT_CONFIGURATION

The _URB_SELECT_CONFIGURATION structure is used by client drivers to select a configuration for a USB device.
_URB_SELECT_INTERFACE

The _URB_SELECT_INTERFACE structure is used by USB client drivers to select an alternate setting for an interface or to change the maximum packet size of a pipe in the current configuration on a USB device.
ADDRESS0_OWNERSHIP_ACQUIRE

Contains parameters for configuring the device.
ALTERNATE_INTERFACE

The ALTERNATE_INTERFACE structure provides information about alternate settings for a Universal Serial Bus (USB) interface.
COMPOSITE_DEVICE_CAPABILITIES

The COMPOSITE_DEVICE_CAPABILITIES structure specifies the capabilities of the driver of a USB multi-function device (composite driver). To initialize the structure, use the COMPOSITE_DEVICE_CAPABILITIES_INIT macro.
CONTROLLER_USB_20_HARDWARE_LPM_FLAGS

Describes supported protocol capabilities for Link Power Management (LPM) in as defined the USB 2.0 specification.
DEFAULT_ENDPOINT_UPDATE

Contains the handle to the default endpoint to update in a framework request that is passed by UCX when it invokes EVT_UCX_DEFAULT_ENDPOINT_UPDATE callback function.
ENDPOINT_RESET

Describes information required to reset an endpoint. This structure is passed by UCX in the EVT_UCX_ENDPOINT_RESET callback function.
ENDPOINTS_CONFIGURE

Describes endpoints to enable or disable endpoints. This structure is passed by UCX in the EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE callback function.
ENDPOINTS_CONFIGURE_FAILURE_FLAGS

This structure provides failure flags to indicate errors, if any, that might have occurred during a request to an EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE callback function.
HUB_DEVICE_CONFIG_INFO

The HUB_DEVICE_CONFIG_INFO structure is used in conjunction with the kernel-mode IOCTL, IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO to request to report information about a USB device and the hub to which the device is attached.
HUB_INFO_FROM_PARENT

Describes information about a hub from its parent device.
PARENT_HUB_FLAGS

This structure is used by the HUB_INFO_FROM_PARENT structure to get hub information from the parent.
REGISTER_COMPOSITE_DEVICE

The REGISTER_COMPOSITE_DEVICE structure is used with the IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE I/O control request to register a parent driver of a Universal Serial Bus (USB) multi-function device (composite driver) with the USB driver stack.
REQUEST_REMOTE_WAKE_NOTIFICATION

The purpose of the REQUEST_REMOTE_WAKE_NOTIFICATION structure is to specify input parameters for the IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION I/O control request.
ROOTHUB_20PORT_INFO

Provides information about a USB 2.0 root hub port. This structure is passed by UCX in the EVT_UCX_ROOTHUB_GET_20PORT_INFO callback function.
ROOTHUB_20PORTS_INFO

This structure that has an array of 2.0 ports supported by the root hub. This structure is provided by UCX in a framework request in the EVT_UCX_ROOTHUB_GET_20PORT_INFO callback function.
ROOTHUB_30PORT_INFO

Provides information about a USB 3.0 root hub port. This structure is passed by UCX in the EVT_UCX_ROOTHUB_GET_30PORT_INFO callback function.
ROOTHUB_30PORT_INFO_EX

Provides extended USB 3.0 port information about speed.
ROOTHUB_30PORTS_INFO

Provides information about USB 3.0 root hub ports. This structure is passed by UCX in the EVT_UCX_ROOTHUB_GET_30PORT_INFO callback function.
ROOTHUB_INFO

Provides information about a USB root hub. This structure is passed by UCX in the EVT_UCX_ROOTHUB_GET_INFO callback function.
STREAM_INFO

This structure stores information about a stream associated with a bulk endpoint.
UCM_CONNECTOR_CONFIG

Describes the configuration options for a Type-C connector object. An initialized UCM_MANAGER_CONFIG structure is an input parameter value to UcmInitializeDevice.
UCM_CONNECTOR_PD_CONFIG

Describes the Power Delivery 2.0 capabilities of the connector.
UCM_CONNECTOR_PD_CONN_STATE_CHANGED_PARAMS

Describes the parameters for PD connection changed event.
UCM_CONNECTOR_TYPEC_ATTACH_PARAMS

Describes the partner that is currently attached to the connector.
UCM_CONNECTOR_TYPEC_CONFIG

Describes the configuration options for a Type-C connector.
UCM_MANAGER_CONFIG

Describes the configuration options for the UCM Manager. An initialized UCM_MANAGER_CONFIG structure is an input parameter value to UcmInitializeDevice.
UCM_PD_POWER_DATA_OBJECT

Describes a Power Data Object. For information about these members, see the Power Delivery specification.
UCM_PD_REQUEST_DATA_OBJECT

Describes a Request Data Object (RDO). For information about these members, see the Power Delivery specification.
UCMTCPCI_DEVICE_CONFIG

Used in the client driver's call to UcmTcpciDeviceInitialize. Call UCMTCPCI_DEVICE_CONFIG_INIT to initialize this structure.
UCMTCPCI_DRIVER_GLOBALS

The global structure for the USB Type-C Port Controller Interface framework extension (UcmTcpciCx).
UCMTCPCI_PORT_CONTROLLER_ALERT_DATA

Contains information about hardware alerts received on the port controller object. This structure is used in the UcmTcpciPortControllerAlert call. Call UCMTCPCI_PORT_CONTROLLER_ALERT_DATA_INIT to initialize this structure.
UCMTCPCI_PORT_CONTROLLER_ALTERNATE_MODE_ENTERED_IN_PARAMS

Stores information about the alternate mode that was detected. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_ALTERNATE_MODE_ENTERED request.
UCMTCPCI_PORT_CONTROLLER_ALTERNATE_MODE_EXITED_IN_PARAMS

Stores information about the alternate mode that was exited. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_ALTERNATE_MODE_EXITED request.
UCMTCPCI_PORT_CONTROLLER_CAPABILITIES

Contains information about the capabilities of the port controller.
UCMTCPCI_PORT_CONTROLLER_CONFIG

Contains configuration options for the port controller object, passed by the client driver in the call to UcmTcpciPortControllerCreate. Call UCMTCPCI_PORT_CONTROLLER_CONFIG_INIT to initialize this structure.
UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_CONFIGURED_IN_PARAMS

Stores information about the pin assignment of the DisplayPort alternate mode that was configured. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_CONFIGURED request.
UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS_CHANGED_IN_PARAMS

Stores information about display out status of the DisplayPort connection. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS_CHANGED request.
UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_HPD_STATUS_CHANGED_IN_PARAMS

Stores information about hot plug detect status of the DisplayPort connection. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_HPD_STATUS_CHANGED request.
UCMTCPCI_PORT_CONTROLLER_GET_CONTROL_IN_PARAMS

This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_GET_CONTROL request.
UCMTCPCI_PORT_CONTROLLER_GET_CONTROL_OUT_PARAMS

Stores the values of all control registers of the port controller retrieved by the IOCTL_UCMTCPCI_PORT_CONTROLLER_GET_CONTROL request.
UCMTCPCI_PORT_CONTROLLER_GET_STATUS_IN_PARAMS

This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_GET_STATUS request.
UCMTCPCI_PORT_CONTROLLER_GET_STATUS_OUT_PARAMS

Stores the values of all status registers of the port controller. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_GET_STATUS request.
UCMTCPCI_PORT_CONTROLLER_IDENTIFICATION

Contains identification information and USB specification version information (in BCD format) about the port controller.
UCMTCPCI_PORT_CONTROLLER_SET_COMMAND_IN_PARAMS

Stores the specified command registers. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_COMMAND request.
UCMTCPCI_PORT_CONTROLLER_SET_CONFIG_STANDARD_OUTPUT_IN_PARAMS

Stores the value of the CONFIG_STANDARD_OUTPUT Register. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_CONFIG_STANDARD_OUTPUT request.
UCMTCPCI_PORT_CONTROLLER_SET_CONTROL_IN_PARAMS

Stores the values of all control registers. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_CONTROL request.
UCMTCPCI_PORT_CONTROLLER_SET_MESSAGE_HEADER_INFO_IN_PARAMS

Stores the value of the VBUS_VOLTAGE_ALARM_LO_CFG Register. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_MESSAGE_HEADER_INFO request.
UCMTCPCI_PORT_CONTROLLER_SET_RECEIVE_DETECT_IN_PARAMS

Stores the value of the RECEIVE_DETECT Register. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_RECEIVE_DETECT request.
UCMTCPCI_PORT_CONTROLLER_SET_TRANSMIT_BUFFER_IN_PARAMS

Stores the value of the TRANSMIT_BUFFER Register. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_TRANSMIT_BUFFER request.
UCMTCPCI_PORT_CONTROLLER_SET_TRANSMIT_IN_PARAMS

Stores the values of TRANSMIT Register. This structure is used in the IOCTL_UCMTCPCI_PORT_CONTROLLER_SET_TRANSMIT request.
UCMUCSI_CONNECTOR_INFO

Stores information about connectors that cannot be obtained by sending UCSI commands such as “Get Connector Capability”.
UCMUCSI_DEVICE_CONFIG

Configuration structure for UcmUcsiDeviceInitialize.
UCMUCSI_DRIVER_GLOBALS

Reserved for UCMUCSI_DRIVER_GLOBALS.
UCMUCSI_PPM_CONFIG

Stores configuration information required to create a Platform Policy Manager (PPM).
UCMUCSI_PPM_GET_UCSI_DATA_BLOCK_IN_PARAMS

Contains a USCI data block for input to IOCTL_UCMUCSI_PPM_GET_UCSI_DATA_BLOCK.
UCMUCSI_PPM_GET_UCSI_DATA_BLOCK_OUT_PARAMS

Contains a USCI data block for output to IOCTL_UCMUCSI_PPM_GET_UCSI_DATA_BLOCK.
UCMUCSI_PPM_SEND_UCSI_DATA_BLOCK_IN_PARAMS

Contains a USCI data block for input to IOCTL_UCMUCSI_PPM_SEND_UCSI_DATA_BLOCK.
UCSI_ACK_CC_CI_COMMAND

Used in the ACK_CC_CI command. See Table 4-7.
UCSI_ALTERNATE_MODE

Used in GET_ALTERNATE_MODES command. See Table 4-26.
UCSI_BM_POWER_SOURCE

Used in GET_CAPABILITY command. See Bit 15:8 in Table 4-14.
UCSI_CCI

Used in GET_CONNECTOR_CAPABILITY command. See Table 4-16.
UCSI_CONNECTOR_RESET_COMMAND

Used in the CONNECTOR_RESET command. See Table 4-5.
UCSI_CONTROL

Used in the SET_NOTIFICATION_ENABLE command. See Table 4-9.
UCSI_DATA_BLOCK

The data structures for memory locations. See Section 3.
UCSI_GET_ALTERNATE_MODES_COMMAND

Used in the GET_ALTERNATE_MODES command. See Table 4-24.
UCSI_GET_ALTERNATE_MODES_IN

Learn how UCSI_GET_ALTERNATE_MODES_IN is used in the GET_ALTERNATE_MODES command. See Table 4-24.
UCSI_GET_CABLE_PROPERTY_COMMAND

Used in the GET_CABLE_PROPERTY command. See Table 4-37.
UCSI_GET_CABLE_PROPERTY_IN

Used in the GET_CABLE_PROPERTY command. See Table 4-39.
UCSI_GET_CAM_SUPPORTED_COMMAND

Used in the GET_CAM_SUPPORTED command. See Table 4-27.
UCSI_GET_CAM_SUPPORTED_IN

Learn how UCSI_GET_CAM_SUPPORTED_IN is used in the GET_CAM_SUPPORTED command. See Table 4-27.
UCSI_GET_CAPABILITY_IN

Used in the GET_CAPABILITY command. See Table 4-13.
UCSI_GET_CONNECTOR_CAPABILITY_COMMAND

Used in the GET_CONNECTOR_CAPABILITY command. See Table 4-15.
UCSI_GET_CONNECTOR_CAPABILITY_IN

Used in the GET_CONNECTOR_CAPABILITY command.
UCSI_GET_CONNECTOR_STATUS_COMMAND

Used in the GET_CONNECTOR_STATUS command. See Table 4-40.
UCSI_GET_CONNECTOR_STATUS_IN

Used in the GET_CONNECTOR_STATUS command. See Table 4-42.
UCSI_GET_CURRENT_CAM_COMMAND

Used in the GET_CURRENT_CAM command. See Table 4-29.
UCSI_GET_CURRENT_CAM_IN

Used in the GET_CURRENT_CAM command. See Table 4-31.
UCSI_GET_ERROR_STATUS_COMMAND

Used in the GET_ERROR_STATUS command. See Table 4-45
UCSI_GET_ERROR_STATUS_IN

Used in the GET_ERROR_STATUS command. See Table 4-47.
UCSI_GET_PDOS_COMMAND

Used in the GET_PDOS command. See Table 4-34.
UCSI_GET_PDOS_IN

Used in the GET_PDOS command. See Table 4-36.
UCSI_MESSAGE_IN

The MESSAGE IN data structure. See Section 3.4.
UCSI_MESSAGE_OUT

The MESSAGE OUT data structure. See Section 3.5.
UCSI_SET_NEW_CAM_COMMAND

Used in the SET_NEW_CAM command. See Table 4-32.
UCSI_SET_NOTIFICATION_ENABLE_COMMAND

Learn how UCSI_SET_NOTIFICATION_ENABLE_COMMAND is used in the SET_NOTIFICATION_ENABLE command. See Table 4-9.
UCSI_SET_PDM_COMMAND

_UCSI_SET_PDM_COMMAND is obsolete.
UCSI_SET_PDR_COMMAND

Used in the SET_PDR command. See Table 4-22.
UCSI_SET_POWER_LEVEL_COMMAND

Used in the SET_POWER_LEVEL command. See Table 4-48.
UCSI_SET_UOM_COMMAND

Used in the SET_UOM command. See Table 4-18.
UCSI_SET_UOR_COMMAND

Used in the SET_UOR command. See Table 4-20.
UCSI_VERSION

The VERSION data structure. See Section 3.1.
UCX_CONTROLLER_ACPI_INFORMATION

This structure provides information about an advanced Configuration and power interface (ACPI) USB controller.
UCX_CONTROLLER_CONFIG

This structure configuration data for a USB controller.
UCX_CONTROLLER_PCI_INFORMATION

This structure provides information about a PCI USB controller.
UCX_CONTROLLER_RESET_COMPLETE_INFO

Contains information about the operation to reset the controller. This is used by the client driver in its EVT_UCX_CONTROLLER_RESET callback function.
UCX_CONTROLLER_TRANSPORT_CHARACTERISTICS

Stores the transport characteristics at relevant points in time. This structure is used in the EVT_UCX_CONTROLLER_GET_TRANSPORT_CHARACTERISTICS callback function.
UCX_CONTROLLER_TRANSPORT_CHARACTERISTICS_CHANGE_FLAGS

Defines flags for the transport characteristics changes. This structure is used in the EVT_UCX_CONTROLLER_SET_TRANSPORT_CHARACTERISTICS_CHANGE_NOTIFICATION callback function.
UCX_DEFAULT_ENDPOINT_EVENT_CALLBACKS

This structure provides a list of UCX default endpoint event callback functions.
UCX_ENDPOINT_CHARACTERISTIC

Stores the characteristics of an endpoint.
UCX_ENDPOINT_EVENT_CALLBACKS

This structure provides a list of pointers to UCX endpoint event callback functions.
UCX_ENDPOINT_ISOCH_TRANSFER_PATH_DELAYS

Stores the isochronous transfer path delay values.
UCX_ROOTHUB_CONFIG

Contains pointers to event callback functions for creating the root hub by calling UcxRootHubCreate. Initialize this structure by calling UCX_ROOTHUB_CONFIG_INIT initialization function (see Ucxclass.h).
UCX_USBDEVICE_CHARACTERISTIC

Stores the characteristics of an device.
UCX_USBDEVICE_CHARACTERISTIC_PATH_DELAY

Learn how UCX_USBDEVICE_CHARACTERISTIC_PATH_DELAY stores the isochronous transfer path delay values.
UCX_USBDEVICE_EVENT_CALLBACKS

This structure provides a list of UCX USB device event callback functions.
UCXUSBDEVICE_INFO

Contains information about the USB device. This structure is passed by UCX in the EVT_UCX_CONTROLLER_USBDEVICE_ADD event callback function.
UDECX_ENDPOINTS_CONFIGURE_PARAMS

Contains the configuration options specified by USB device emulation class extension (UdeCx) to the client driver when the class extension invokes EVT_UDECX_USB_DEVICE_ENDPOINTS_CONFIGURE.
UDECX_USB_DEVICE_PLUG_IN_OPTIONS

Contains the port numbers to which a virtual USB device is connected. Initialize this structure by calling the UDECX_USB_DEVICE_PLUG_IN_OPTIONS_INIT method.
UDECX_USB_DEVICE_STATE_CHANGE_CALLBACKS

Initializes a UDECX_USB_DEVICE_STATE_CHANGE_CALLBACKS structure with pointers to callback functions that are implemented by a UDE client for a virtual USB device.
UDECX_USB_ENDPOINT_CALLBACKS

Contains function pointers to endpoint callback functions implemented by the UDE client driver. Initialize this structure by calling UDECX_USB_ENDPOINT_CALLBACKS_INIT.
UDECX_USB_ENDPOINT_INIT_AND_METADATA

Contains the descriptors supported by an endpoint of a virtual USB device.
UDECX_WDF_DEVICE_CONFIG

Contains pointers to event callback functions implemented by the UDE client driver for a USB host controller. Initialize this structure by calling UDECX_WDF_DEVICE_CONFIG_INIT.
UFX_DEVICE_CALLBACKS

The UFX_DEVICE_CALLBACKS structure is used to define then event callback functions supported by the client driver.
UFX_DEVICE_CAPABILITIES

The UFX_DEVICE_CAPABILITIES structure is used USB to define properties of the Universal Serial Bus (USB) device created by the controller.
UFX_ENDPOINT_CALLBACKS

The UFX_ENDPOINT_CALLBACKS structure is used to define then event callback functions supported by the client driver.
UFX_HARDWARE_FAILURE_CONTEXT

The UFX_HARDWARE_FAILURE_CONTEXT structure is used to define controller-specific hardware failure properties.
UFX_INTERFACE_PROPRIETARY_CHARGER

Stores pointers to driver-implemented callback functions for handling proprietary charger operations.
UFX_PROPRIETARY_CHARGER

Describes the proprietary charger's device power requirements.
URB

The URB structure is used by USB client drivers to describe USB request blocks (URBs) that send requests to the USB driver stack. The URB structure defines a format for all possible commands that can be sent to a USB device.
URS_CONFIG

Contains pointers to event callback functions implemented by the URS client driver for a USB dual-role controller. Initialize this structure by calling URS_CONFIG_INIT.
USB_30_HUB_DESCRIPTOR

The USB_30_HUB_DESCRIPTOR structure contains a SuperSpeed hub descriptor. For information about the structure members, see Universal Serial Bus Revision 3.0 Specification, 10.13.2.1 Hub Descriptor, Table 10-3. SuperSpeed Hub Descriptor.
USB_BUS_INFORMATION_LEVEL_0

The USB_BUS_INFORMATION_LEVEL_0 structure is used in conjunction with the QueryBusInformation interface routine to report information about the bus.
USB_BUS_INFORMATION_LEVEL_1

The USB_BUS_INFORMATION_LEVEL_1 structure is used in conjunction with the QueryBusInformation interface routine to report information about the bus.
USB_BUS_INTERFACE_USBDI_V0

The USB_BUS_INTERFACE_USBDI_V0 structure is provided by the USB hub driver to allow USB clients to make direct calls to the hub driver without allocating IRPs.
USB_BUS_INTERFACE_USBDI_V1

The USB_BUS_INTERFACE_USBDI_V1 structure is provided by the USB hub driver to allow USB clients to make direct calls to the hub driver without allocating IRPs.
USB_BUS_INTERFACE_USBDI_V2

The USB_BUS_INTERFACE_USBDI_V2 structure is provided by the USB hub driver to allow USB clients to make direct calls to the hub driver without allocating IRPs.
USB_BUS_INTERFACE_USBDI_V3

The USB_BUS_INTERFACE_USBDI_V3 structure is provided by the USB hub driver to allow USB clients to make direct calls to the hub driver without allocating IRPs.
USB_BUS_NOTIFICATION

Learn more about: _USB_BUS_NOTIFICATION structure
USB_COMMON_DESCRIPTOR

The USB_COMMON_DESCRIPTOR structure contains the head of the first descriptor that matches the search criteria in a call to USBD_ParseDescriptors.
USB_CONFIGURATION_DESCRIPTOR

The USB_CONFIGURATION_DESCRIPTOR structure is used by USB client drivers to hold a USB-defined configuration descriptor.
USB_CYCLE_PORT_PARAMS

The USB_CYCLE_PORT_PARAMS structure is used with the IOCTL_USB_HUB_CYCLE_PORT I/O control request to power cycle the port that is associated with the PDO that receives the request.
USB_DESCRIPTOR_REQUEST

The USB_DESCRIPTOR_REQUEST structure is used with the IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION I/O control request to retrieve one or more descriptors for the device that is associated with the indicated connection index.
USB_DEVICE_CAPABILITY_FIRMWARE_STATUS_DESCRIPTOR

USB FW Update as defined in the USB 3.2 ENGINEERING CHANGE NOTICE.
USB_DEVICE_CHARACTERISTICS

Contains information about the USB device’s characteristics, such as the maximum send and receive delays for any request. This structure is used in the IOCTL_USB_GET_DEVICE_CHARACTERISTICS request.
USB_DEVICE_DESCRIPTOR

The USB_DEVICE_DESCRIPTOR structure is used by USB client drivers to retrieve a USB-defined device descriptor.
USB_DEVICE_PORT_PATH

Contains the port path of a USB device.
USB_DEVICE_QUALIFIER_DESCRIPTOR

The USB_DEVICE_QUALIFIER_DESCRIPTOR structure is used by USB client drivers to retrieve a USB-defined device qualifier descriptor.
USB_ENDPOINT_DESCRIPTOR

The USB_ENDPOINT_DESCRIPTOR structure is used by USB client drivers to retrieve a USB-defined endpoint descriptor.
USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION

Stores the frame and microframe numbers and the calculated system QPC values. This structure is used in the IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC request.
USB_HCD_DRIVERKEY_NAME

The USB_HCD_DRIVERKEY_NAME structure is used with the IOCTL_GET_HCD_DRIVERKEY_NAME I/O control request to retrieve the driver key in the registry for the USB host controller driver.
USB_HUB_CAP_FLAGS

The USB_HUB_CAP_FLAGS structure is used to report the capabilities of a hub.
USB_HUB_CAPABILITIES

The USB_HUB_CAPABILITIES structure has been deprecated. Use USB_HUB_CAPABILITIES_EX instead.
USB_HUB_CAPABILITIES_EX

The USB_HUB_CAPABILITIES_EX structure is used with the IOCTL_USB_GET_HUB_CAPABILITIES I/O control request to retrieve the capabilities of a particular USB hub.
USB_HUB_DESCRIPTOR

The USB_HUB_DESCRIPTOR structure contains a hub descriptor.
USB_HUB_INFORMATION

The USB_HUB_INFORMATION structure contains information about a hub.
USB_HUB_INFORMATION_EX

The USB_HUB_INFORMATION_EX structure is used with the IOCTL_USB_GET_HUB_INFORMATION_EX I/O control request to retrieve information about a Universal Serial Bus (USB) hub.
USB_HUB_NAME

The USB_HUB_NAME structure stores the hub's symbolic device name.
USB_ID_STRING

The USB_ID_STRING structure is used to store a string or multi-string.
USB_INTERFACE_DESCRIPTOR

The USB_INTERFACE_DESCRIPTOR structure is used by USB client drivers to retrieve a USB-defined interface descriptor.
USB_MI_PARENT_INFORMATION

The USB_MI_PARENT_INFORMATION structure contains information about a composite device.
USB_NODE_CONNECTION_ATTRIBUTES

The USB_NODE_CONNECTION_ATTRIBUTES structure is used with the IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES I/O control request to retrieve the attributes of a connection.
USB_NODE_CONNECTION_DRIVERKEY_NAME

The USB_NODE_CONNECTION_DRIVERKEY_NAME structure is used with the IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME I/O control request to retrieve the driver key name for the device that is connected to the indicated port.
USB_NODE_CONNECTION_INFORMATION

The USB_NODE_CONNECTION_INFORMATION structure is used with the IOCTL_USB_GET_NODE_CONNECTION_INFORMATION request to retrieve information about a USB port and connected device.
USB_NODE_CONNECTION_INFORMATION_EX

The USB_NODE_CONNECTION_INFORMATION_EX structure is used in conjunction with the IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX request to obtain information about the connection associated with the indicated USB port.
USB_NODE_CONNECTION_INFORMATION_EX_V2

The USB_NODE_CONNECTION_INFORMATION_EX_V2 structure is used with the IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 I/O control request to retrieve speed information about a Universal Serial Bus (USB) device that is attached to a particular port.
USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS

The USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS union is used to indicate the speed at which a USB 3.0 device is currently operating and whether it can operate at higher speed, when attached to a particular port.
USB_NODE_CONNECTION_NAME

The USB_NODE_CONNECTION_NAME structure is used with the IOCTL_USB_GET_NODE_CONNECTION_NAME I/O control request to retrieve the symbolic link of the downstream hub that is attached to the port.
USB_NODE_INFORMATION

The USB_NODE_INFORMATION structure is used with the IOCTL_USB_GET_NODE_INFORMATION I/O control request to retrieve information about a parent device.
USB_PIPE_INFO

The USB_PIPE_INFO structure is used in conjunction with the USB_NODE_CONNECTION_INFORMATION_EX structure and the IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX request to obtain information about a connection and its associated pipes.
USB_PORT_CONNECTOR_PROPERTIES

The USB_PORT_CONNECTOR_PROPERTIES structure is used with the IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES I/O control request to retrieve information about a port on a particular SuperSpeed hub.
USB_PORT_PROPERTIES

The USB_PORT_PROPERTIES union is used to report the capabilities of a Universal Serial Bus (USB) port.The port capabilities are retrieved in the USB_PORT_CONNECTOR_PROPERTIES structure by the IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES I/O control request.
USB_PROTOCOLS

The USB_PROTOCOLS union is used to report the Universal Serial Bus (USB) signaling protocols that are supported by the port.
USB_ROOT_HUB_NAME

The USB_ROOT_HUB_NAME structure stores the root hub's symbolic device name.
USB_START_TRACKING_FOR_TIME_SYNC_INFORMATION

The input and output buffer for the IOCTL_USB_START_TRACKING_FOR_TIME_SYNC request.
USB_STOP_TRACKING_FOR_TIME_SYNC_INFORMATION

The input buffer for the IOCTL_USB_STOP_TRACKING_FOR_TIME_SYNC request.
USB_STRING_DESCRIPTOR

The USB_STRING_DESCRIPTOR structure is used by USB client drivers to hold a USB-defined string descriptor.
USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR

The USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR structure is used by USB client drivers to retrieve a USB-defined SuperSpeed Endpoint Companion descriptor. For more information, see section 9.6.7 and Table 9-20 in the official USB 3.0 specification.
USB_TOPOLOGY_ADDRESS

The USB_TOPOLOGY_ADDRESS structure is used with the IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS I/O request to retrieve information about a USB device?s location in the USB device tree.
USB_TRANSPORT_CHARACTERISTICS

Stores the transport characteristics at relevant points in time. This structure is used in the IOCTL_USB_GET_TRANSPORT_CHARACTERISTICS request.
USB_TRANSPORT_CHARACTERISTICS_CHANGE_NOTIFICATION

Contains registration information filled when the IOCTL_USB_REGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE request completes.
USB_TRANSPORT_CHARACTERISTICS_CHANGE_REGISTRATION

Contains registration information for the IOCTL_USB_REGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE request.
USB_TRANSPORT_CHARACTERISTICS_CHANGE_UNREGISTRATION

Contains unregistration information for the IOCTL_USB_UNREGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE request.
USBC_DEVICE_CONFIGURATION_INTERFACE_V1

The USBC_DEVICE_CONFIGURATION_INTERFACE_V1 structure is exposed by the vendor-supplied filter drivers to assist the USB generic parent driver in defining interface collections.
USBC_FUNCTION_DESCRIPTOR

The USBC_FUNCTION_DESCRIPTOR structure describes a USB function and its associated interface collection.
USBC_PD_ALTERNATE_MODE

Stores information about the alternate mode that was detected.
USBC_PD_POWER_DATA_OBJECT

Describes a power data object (PDO).
USBC_PD_REQUEST_DATA_OBJECT

Describes a request data object (RDO).
USBD_ENDPOINT_OFFLOAD_INFORMATION

Stores xHCI-specific information that is used by client drivers to transfer data to and from the offloaded endpoints.
USBD_INTERFACE_INFORMATION

The USBD_INTERFACE_INFORMATION structure holds information about an interface for a configuration on a USB device.
USBD_INTERFACE_LIST_ENTRY

The USBD_INTERFACE_LIST_ENTRY structure is used by USB client drivers to create an array of interfaces to be inserted into a configuration request.
USBD_ISO_PACKET_DESCRIPTOR

The USBD_ISO_PACKET_DESCRIPTOR structure is used by USB client drivers to describe an isochronous transfer packet.
USBD_PIPE_INFORMATION

The USBD_PIPE_INFORMATION structure is used by USB client drivers to hold information about a pipe from a specific interface.
USBD_STREAM_INFORMATION

The USBD_STREAM_INFORMATION structure stores information about a stream associated with a bulk endpoint.
USBD_VERSION_INFORMATION

The USBD_VERSION_INFORMATION structure is used by the GetUSBDIVersion function to report its output data.
USBDEVICE_ABORTIO

Contains a handle for the Universal Serial Bus (USB) hub or device for which to abort data transfers.
USBDEVICE_ADDRESS

Contains parameters for a request to transition the specified device to the Addressed state. This structure is passed by UCX in request parameters (Parameters.Others.Arg1) of a framework request object of the EVT_UCX_USBDEVICE_ADDRESS callback function.
USBDEVICE_DISABLE

Contains parameters for a request to disable the specified device. This structure is passed by UCX in request parameters (Parameters.Others.Arg1) of a framework request object of the EVT_UCX_USBDEVICE_DISABLE callback function.
USBDEVICE_ENABLE

Contains parameters for a request to enable the specified device. This structure is passed by UCX in request parameters (Parameters.Others.Arg1) of a framework request object of the EVT_UCX_USBDEVICE_ENABLE callback function.
USBDEVICE_ENABLE_FAILURE_FLAGS

The flags that are set by the client driver in the EVT_UCX_USBDEVICE_ENABLE callback function. Indicate errors, if any, that might have occurred while enabling the device.
USBDEVICE_HUB_INFO

Contains parameters for a request to get information about the specified hub. This structure is passed by UCX in request parameters (Parameters.Others.Arg1) of a framework request object of the EVT_UCX_USBDEVICE_HUB_INFO callback function.
USBDEVICE_MGMT_HEADER

This structure provides a handle for the Universal Serial Bus (USB) hub or device physically connected to the bus.
USBDEVICE_PURGEIO

The USBDEVICE_PURGEIO structure contains the handle for the Universal Serial Bus (USB) hub or device to purge I/O for.
USBDEVICE_RESET

Contains parameters for a request to reset the specified device. This structure is passed by UCX in request parameters (Parameters.Others.Arg1) of a framework request object of the EVT_UCX_USBDEVICE_RESET callback function.
USBDEVICE_STARTIO

Contains a handle for the Universal Serial Bus (USB) hub or device on which to start data transfer.
USBDEVICE_TREE_PURGEIO

This structure provides the handle for the Universal Serial Bus (USB) device tree to purge I/O for.
USBDEVICE_UPDATE

Passed by UCX to update the specified device. This structure is in the request parameters (Parameters.Others.Arg1) of a framework request object passed in the EVT_UCX_USBDEVICE_UPDATE callback function.
USBDEVICE_UPDATE_20_HARDWARE_LPM_PARAMETERS

Contains parameters for a request to update USB 2.0 link power management (LPM). UCX passes this structure in the EVT_UCX_USBDEVICE_UPDATE callback function.
USBDEVICE_UPDATE_FAILURE_FLAGS

The flags that are set by the client driver in the EVT_UCX_USBDEVICE_UPDATE callback function. Indicate errors, if any, that might have occurred while updating the device.
USBDEVICE_UPDATE_FLAGS

Contains request flags set by UCX that is passed in the USBDEVICE_UPDATE structure when UCX invokes the client driver's EVT_UCX_USBDEVICE_UPDATE callback function.
USBFN_BUS_CONFIGURATION_INFO

Configuration packet that stores information about an available USB configuration.
USBFN_CLASS_INFORMATION_PACKET

Describes device interface class information associated with a USB interface. This structure can only hold information about a single function interface.
USBFN_CLASS_INFORMATION_PACKET_EX

Describes device interface class information associated with a USB interface. This structure can be used to describe single and multi-interface functions.
USBFN_CLASS_INTERFACE

Describes an interface and its endpoints.
USBFN_CLASS_INTERFACE_EX

Learn how USBFN_CLASS_INTERFACE_EX describes an interface and its endpoints.
USBFN_INTERFACE_ATTACH

Stores pointers to driver-implemented callback functions for handling attach and detach operations.
USBFN_INTERFACE_INFO

Learn how USBFN_INTERFACE_INFO describes an interface and its endpoints.
USBFN_NOTIFICATION

Describes information about a Universal Serial Bus (USB) event notification that was received by using IOCTL_INTERNAL_USBFN_BUS_EVENT_NOTIFICATION.
USBFN_ON_ATTACH

Describes the detected port type and attach action.
USBFN_PIPE_INFORMATION

Describes attributes of a pipe associated with an endpoint on a specific interface.
USBFN_POWER_FILTER_STATE

Reserved. Do not use.
USBFN_USB_STRING

Describes a USB string descriptor and the associated string index.
USBPM_ASSIGN_CONNECTOR_POWER_LEVEL_PARAMS

Describes the parameters for the UsbPm_AssignConnectorPowerLevel.
USBPM_CLIENT_CONFIG

The configuration structure used in the registering the client driver with the Policy Manager
USBPM_CLIENT_CONFIG_EXTRA_INFO

Contains optional information used to configure the client driver's registration.
USBPM_CONNECTOR_PROPERTIES

Describes the properties of a connector.
USBPM_CONNECTOR_STATE

Describes the state of a connector.
USBPM_EVENT_CALLBACK_PARAMS

Contains the details of the events related to changes in policy manager arrival/removal, hub arrival/removal or connector state change.
USBPM_HUB_CONNECTOR_HANDLES

Stores the connector handles for all connectors on a hub.
USBPM_HUB_PROPERTIES

Properties of a connector hub.