структура _URB_SELECT_INTERFACE (usb.h)
Структура _URB_SELECT_INTERFACE используется драйверами USB-клиента для выбора альтернативного параметра для интерфейса или для изменения максимального размера пакета канала в текущей конфигурации на USB-устройстве.
Синтаксис
struct _URB_SELECT_INTERFACE {
struct _URB_HEADER Hdr;
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
USBD_INTERFACE_INFORMATION Interface;
};
Члены
Hdr
Указатель на структуру _URB_HEADER , указывающую сведения о заголовке URB. Hdr.Function должен быть URB_FUNCTION_SELECT_INTERFACE, а Hdr.Length должен иметь размер всей urb.
ConfigurationHandle
Указывает дескриптор конфигурации, к которой принадлежит этот интерфейс. Драйвер хост-контроллера возвращает этот дескриптор, когда клиент выбирает конфигурацию с URB_FUNCTION_SELECT_CONFIGURATION запросом.
Interface
Переменная длина USBD_INTERFACE_INFORMATION структуры, указывающей интерфейс и новый альтернативный параметр для этого интерфейса, а также при необходимости новые максимальные размеры пакетов для соответствующих каналов. Дополнительные сведения см. в подразделе "Примечания".
Комментарии
Вы можете использовать макрос GET_SELECT_INTERFACE_REQUEST_SIZE для определения размера URB_FUNCTION_SELECT_INTERFACE URB и подпрограмму UsbBuildSelectInterfaceRequest для форматирования URB.
Структура USBD_INTERFACE_INFORMATION содержит сведения об интерфейсе и его альтернативном параметре. Элемент "Каналы " USBD_INTERFACE_INFORMATION указывает на массив USBD_PIPE_INFORMATION структур. Массив хранит сведения о канале, связанном с конечными точками интерфейса. Вы можете переопределить определенные параметры по умолчанию для канала, например максимальный размер пакета. Чтобы изменить максимальный размер пакета, установите флаг USBD_PF_CHANGE_MAX_PACKET в Pipes[i].PipeFlags
, а затем укажите новое значение в Pipes[i].MaximumPacketSize
.
После успешного завершения обработки URB_FUNCTION_SELECT_INTERFACE URB драйвер автобуса возвращает массив дескрипторов для каждого канала в элементе Pipes[i].PipeHandle
. Драйвер клиента может хранить дескрипторы канала для отправки запросов ввода-вывода в определенные каналы.
Требования
Требование | Значение |
---|---|
Заголовок | usb.h (включая Usb.h) |