Интерфейс
Этот дескриптор описывает специфический интерфейс в случае связанной конфигурации (This descriptor describes a specific interface provided by the associated configuration.) Конфигурация обеспечивает один или более интерфейсов, каждый с собственными дескрипторами конечной точки, описывающими уникальный набор конечных точек внутри конфигурации. Когда конфигурация поддерживает более чем один интерфейс, конечные точки для специфического интерфейса следуют сразу за дескриптором интерфейса в данных, возвращаемых запросом Get Configuration. Дескриптор интерфейса всегда возвращается как часть дескриптора конфигурации. К нему нельзя непосредственно обращаться запросом Get или Set Descriptor.
Интерфейс может включать альтернативные установки, которые позволяют изменять конечные точки и-или их характеристики после того, как устройство было сконфигурировано. В настройке по умолчанию для интерфейса, альтернатива всегда установлена в нуль. Запрос Set Interface используется, чтобы выбрать альтернативную установку или возвратиться к настройке по умолчанию. Запрос Get Interface возвращает выбранную альтернативную установку.
Альтернативные установки позволяют части конфигурации устройства быть измененными, в то время как другие интерфейсы остаются в работе. Если конфигурация имеет альтернативные установки для одного или более интерфейсов, дескриптор отдельного интерфейса и связанные с ним конечные точки включаются в каждую установку.
Если конфигурация устройства обеспечивает один интерфейс с двумя альтернативными установками, дескриптор конфигурации будет сопровождаться дескриптором интерфейса с полями bInterfaceNumber
и bAlternateSetting установленными в нуль и затем дескрипторами конечной точки для этой установки, сопровождаться другим дескриптором интерфейса и связанными с ним дескрипторами конечной точки. (If a device configuration supported a single interface with two alternate settings, the configuration descriptor would be followed by an interface descriptor with the bInterfaceNumber
and bAlternateSetting fields set to zero and then the endpoint descriptors for that setting, followed by another interface descriptor and its associated endpoint descriptors.) В дескрипторе второго интерфейса поле bInterfaceNumber, было бы также установлено в нуль, но поле bAlternateSetting
дескриптора второго интерфейса, было бы установлено в единицу.
Если интерфейс использует только нулевую конечной точки, никакие дескрипторы конечной точки не следуют за дескриптором интерфейса, и интерфейс определяет интерфейс запроса(the interface identifies a request interface), который использует создаваемый по умолчанию канал, присоединенный к нулевой конечной точки. В этом случае, поле bNumEndpoints
должно быть установлено в нуль.
Дескриптор интерфейса никогда не включает нулевую конечную точку в число конечных точек.
Смещение |
Поле |
Размер |
Значение |
Описание |
0 |
bLength |
1 |
Number |
Размер этого дескриптора в байтах |
1 |
bDescriptorType |
1 |
Constant |
Тип Дескриптора INTERFACE |
2 |
bInterfaceNumber |
1 |
Number |
Номер интерфейса. Zero-based value, идентифицирующее индекс в массиве параллельных интерфейсов, обеспечиваемых этой конфигурацией. |
3 |
bAlternateSetting |
1 |
Number |
Значение, используемое для выбора альтернативной установки определяемого предшествующим полем интерфейса |
4 |
bNumEndpoints |
1 |
Number |
Число конечных точек, используемых этим интерфейсом (не включая нулевую конечную точку). Если это значение 0, этот интерфейс использует только нулевую конечную точку. |
5 |
bInterfaceClass |
1 |
Class |
Код Класса (назначенный USB) Если это поле сброшено в 0, интерфейс не принадлежит никакому определенному USB классу устройств. Если это поле установлено в 0xFF, класс интерфейса определяется продавцом. Все другие значения зарезервированы для назначения USB. |
6 |
bInterfaceSubClass |
1 |
SubClass |
Код Подкласса (назначенный USB). Эти коды определяются значением поля bInterfaceClass. Если поле bInterfaceClass сброшено в 0, это поле должно также быть сброшено в 0. Если поле bInterfaceClass не установлено к 0xFF, все значения зарезервированы для назначения USB. |
Смещение |
Поле |
Размер |
Значение |
Описание |
7 |
bInterfaceProtocol |
1 |
Protocol |
Код Протокола (назначенный USB). Эти коды определяются значением полей bInterfaceClass и bInterfaceSubClass. Если интерфейс поддерживает запросы определяемые классом, этот код определяет протоколы, которые устройство использует как определено спецификацией класса устройства. Если это поле сброшено в 0, устройство не использует протокол определяемый классом на этом интерфейсе. Если это поле установлено к 0xFF, устройство использует для этого интерфейса протокол определенный продавцом. |
8 |
iInterface |
1 |
Index |
Индекс строкового дескриптора, описывающего этот интерфейс |