USB_DEVICE_DESCRIPTOR structure (usbspec.h)

The USB_DEVICE_DESCRIPTOR structure is used by USB client drivers to retrieve a USB-defined device descriptor. The members of this structure are described in the Universal Serial Bus 3.1 Specification available at USB Document Library. See section 9.6.1.

Syntax

typedef struct _USB_DEVICE_DESCRIPTOR {
  UCHAR  bLength;
  UCHAR  bDescriptorType;
  USHORT bcdUSB;
  UCHAR  bDeviceClass;
  UCHAR  bDeviceSubClass;
  UCHAR  bDeviceProtocol;
  UCHAR  bMaxPacketSize0;
  USHORT idVendor;
  USHORT idProduct;
  USHORT bcdDevice;
  UCHAR  iManufacturer;
  UCHAR  iProduct;
  UCHAR  iSerialNumber;
  UCHAR  bNumConfigurations;
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;

Members

bLength

Specifies the length, in bytes, of this descriptor.

bDescriptorType

Specifies the descriptor type. Must be set to USB_DEVICE_DESCRIPTOR_TYPE.

bcdUSB

Identifies the version of the USB specification that this descriptor structure complies with. This value is a binary-coded decimal number.

bDeviceClass

Specifies the class code of the device as assigned by the USB specification group.

bDeviceSubClass

Specifies the subclass code of the device as assigned by the USB specification group.

bDeviceProtocol

Specifies the protocol code of the device as assigned by the USB specification group.

bMaxPacketSize0

Specifies the maximum packet size, in bytes, for endpoint zero of the device. The value must be set to 8, 16, 32, or 64.

idVendor

Specifies the vendor identifier for the device as assigned by the USB specification committee.

idProduct

Specifies the product identifier. This value is assigned by the manufacturer and is device-specific.

bcdDevice

Identifies the version of the device. This value is a binary-coded decimal number.

iManufacturer

Specifies a device-defined index of the string descriptor that provides a string containing the name of the manufacturer of this device.

iProduct

Specifies a device-defined index of the string descriptor that provides a string that contains a description of the device.

iSerialNumber

Specifies a device-defined index of the string descriptor that provides a string that contains a manufacturer-determined serial number for the device.

bNumConfigurations

Specifies the total number of possible configurations for the device.

Remarks

This structure is used to hold a retrieved USB-defined device descriptor. This information can then be used to further configure or retrieve information about the device. Device descriptors are retrieved by submitting a get-descriptor URB.

The iManufacturer, iProduct, and iSerialNumber values, when returned from the host controller driver, contain index values into an array of string descriptors maintained by the device. To retrieve these strings, a string descriptor request can be sent to the device using these index values.

Requirements

Requirement Value
Header usbspec.h (include Usb100.h)

See also

USB Structures

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST