Working with USB Interfaces
The framework represents each USB interface as a framework USB interface object. When a driver creates a framework USB device object, the framework creates a framework USB interface object for each USB interface that the device's first USB configuration contains.
Most USB devices have only one interface, and the interface has only one alternate setting. Drivers for such devices typically do not need to use the object methods that the framework's USB interface object defines.
If your driver supports USB devices that provide multiple interfaces or alternate settings, interface object methods enable the driver to perform the following operations:
After your driver has called WdfUsbTargetDeviceCreateWithParameters, it can call WdfUsbTargetDeviceGetInterface to obtain a handle to a framework USB interface object that represents one of the device's USB interfaces. Then your driver can call several methods that the USB interface object defines for obtaining information about the USB interface.
Your driver can call the following methods anytime after it has called WdfUsbTargetDeviceCreateWithParameters:
Returns the USB interface number that is associated with a USB interface object.
Retrieves that USB interface descriptor that is associated with one of the alternate settings of a USB interface.
Returns the number of endpoints that are associated with one of the alternate settings of a USB interface.
Retrieves information about an endpoint and its associated pipe.
Your driver can call the following methods after it has called WdfUsbTargetDeviceSelectConfig:
Returns an index value that identifies the alternate setting that is currently selected for a USB interface.
Returns the number of pipes that are configured for a specified USB device interface.
Returns a handle to the framework pipe object that is associated with a specified USB device interface and pipe index.
After a driver has called WdfUsbTargetDeviceSelectConfig to select a configuration for a USB device, the driver can call WdfUsbInterfaceSelectSetting to select an alternate setting for one of the configuration's USB interfaces.
The device's alternate settings must be numbered contiguously, starting with zero.
For related information, see How to select an alternate setting in a USB interface.