struct libusb_interface_descriptor

Overview

A structure representing the standard USB interface descriptor. Moreā€¦

#include <libusb.h>

struct libusb_interface_descriptor {
    // fields

    uint8_t bLength;
    uint8_t bDescriptorType;
    uint8_t bInterfaceNumber;
    uint8_t bAlternateSetting;
    uint8_t bNumEndpoints;
    uint8_t bInterfaceClass;
    uint8_t bInterfaceSubClass;
    uint8_t bInterfaceProtocol;
    uint8_t iInterface;
    const struct libusb_endpoint_descriptor* endpoint;
    const unsigned char* extra;
    int extra_length;
};

Detailed Documentation

A structure representing the standard USB interface descriptor.

This descriptor is documented in section 9.6.5 of the USB 3.0 specification. All multiple-byte fields are represented in host-endian format.

Fields

uint8_t bLength

Size of this descriptor (in bytes)

uint8_t bDescriptorType

Descriptor type.

Will have value libusb_descriptor_type::LIBUSB_DT_INTERFACE LIBUSB_DT_INTERFACE in this context.

uint8_t bInterfaceNumber

Number of this interface.

uint8_t bAlternateSetting

Value used to select this alternate setting for this interface.

uint8_t bNumEndpoints

Number of endpoints used by this interface (excluding the control endpoint).

uint8_t bInterfaceClass

USB-IF class code for this interface.

See libusb_class_code.

uint8_t bInterfaceSubClass

USB-IF subclass code for this interface, qualified by the bInterfaceClass value.

uint8_t bInterfaceProtocol

USB-IF protocol code for this interface, qualified by the bInterfaceClass and bInterfaceSubClass values.

uint8_t iInterface

Index of string descriptor describing this interface.

const struct libusb_endpoint_descriptor* endpoint

Array of endpoint descriptors.

This length of this array is determined by the bNumEndpoints field.

const unsigned char* extra

Extra descriptors.

If libusb encounters unknown interface descriptors, it will store them here, should you wish to parse them.

int extra_length

Length of the extra descriptors, in bytes.