UFX objects and handles used by a USB function client driver


  • UFX objects are used by the function controller driver to handle transfers to and from endpoints.
  • These objects are handles to WDF objects and are created by UFX at the request of client driver. Each object's lifetime is managed by UFX.

Applies to

  • Windows 10

Last updated

  • July 2015

Important APIs

USB function class extension (UFX) uses the WDF object functionality to define these USB-specific UFX objects.

These objects are handles to WDF objects and are created by UFX at the request of the function client driver. Optionally client driver can associate a context with these objects which can be passed at the time of the creation. Every WDF object created by UFX can potentially have two device contexts: One device context set by UFX at the object creation time; the other device context passed in by client driver and is set in UFX by using WdfObjectAllocateContext after the WDF object is created.

USB device object


Represents the USB device created by the controller. The object is responsible for managing USB states according to the USB protocol specification and managing one or more endpoints associated with the USB device. The function controller driver creates this object within the EvtDriverDeviceAdd callback by calling the UfxDeviceCreate method.

Initiates connection with the host.

Disables the function controller's communication with the host.

Assigns an address on the function controller.

Creates a default endpoint object.

Creates a default endpoint object.

Update the state of the USB device.

Update the type of the new port to which the USB device is connected.

Initiate port detection.

initiate remote wake-up on the function controller.

Initiates proprietary charger detection.

Resets the proprietary charger.

Sets charger information that it uses to enable charging over USB.

USB endpoint object


Represents a logical connection between the host and the device. The object is responsible for transfer of data to/from the host. For every device object there can be one or more endpoints. The default endpoint is always the control endpoint and rest are class driver specific objects. The function controller driver creates the object in the EVT_UFX_DEVICE_ENDPOINT_ADD callback by calling the UfxEndpointCreate method.

Developing Windows drivers for USB function controllers