<!--
{
  "availability" : [
    "DriverKit: 19.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "USBDriverKit",
  "identifier" : "/documentation/USBDriverKit/IOUSBInterfaceDescriptor",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "USBDriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOUSBInterfaceDescriptor"
  },
  "title" : "IOUSBInterfaceDescriptor"
}
-->

# IOUSBInterfaceDescriptor

A descriptor for a specific interface of a USB device.

```
struct IOUSBInterfaceDescriptor;
```

## Overview

An [`IOUSBInterfaceDescriptor`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor) object contains information about one of the device’s supported interfaces. A device’s configuration provides one or more interfaces, each with zero or more endpoints that define how to configure the pipes for that device.

For more information about this descriptor type, see section 9.6.5 of the USB 2.0 specification at <http://www.usb.org>.

## Topics

### Accessing the Descriptor Properties

[`uint8_t bLength;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/bLength)

The size of this descriptor in bytes.

[`uint8_t bDescriptorType;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/bDescriptorType)

A constant value indicating an interface descriptor.

[`uint8_t bInterfaceNumber;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/bInterfaceNumber)

The zero-based index of this interface in the current configuration.

[`uint8_t bAlternateSetting;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/bAlternateSetting)

The alternative setting for the interface.

[`uint8_t bNumEndpoints;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/bNumEndpoints)

The number of endpoints that this interface uses.

[`uint8_t bInterfaceClass;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/bInterfaceClass)

The class code indicating the behavior of this interface.

[`uint8_t bInterfaceSubClass;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/bInterfaceSubClass)

The subclass code that further defines the behavior of this interface.

[`uint8_t bInterfaceProtocol;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/bInterfaceProtocol)

The protocol that this interface supports.

[`uint8_t iInterface;`](/documentation/USBDriverKit/IOUSBInterfaceDescriptor/iInterface)

The index of a string descriptor that describes this interface.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)