структура _URB_CONTROL_VENDOR_OR_CLASS_REQUEST (usb.h)
Структура _URB_CONTROL_VENDOR_OR_CLASS_REQUEST используется драйверами USB-клиента для выдачи команды поставщика или класса устройству, интерфейсу, конечной точке или другому определенному устройству целевому объекту.
Синтаксис
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR RequestTypeReservedBits;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Reserved1;
};
Члены
Hdr
Указатель на структуру _URB_HEADER , указывающую сведения о заголовке URB. Hdr.Function должен быть одним из URB_FUNCTION_CLASS_XXX или URB_FUNCTION_VENDOR_XXX GET_STATUS, а Hdr.Length — sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST)
.
Reserved
TransferFlags
Задает ноль, единицу или сочетание следующих флагов:
Значение | Значение |
---|---|
|
Задано для запроса данных с устройства. Для передачи данных на устройство этот флаг должен быть снят. Флаг должен быть установлен, если канал является каналом передачи прерываний. |
|
Задано, чтобы контроллер узла не возвращал ошибку при получении пакета от устройства, который короче максимального размера пакета для конечной точки. Максимальный размер пакета для конечной точки указывается в элементе bMaxPacketSize0 структуры USB_DEVICE_DESCRIPTOR (дескриптор устройства) для конечной точки управления по умолчанию. Для конечной точки управления, отличной от используемой по умолчанию, максимальный размер пакета задается в элементе wMaxPacketSize структуры USB_ENDPOINT_DESCRIPTOR (дескриптор конечной точки).
Когда контроллер узла получает пакет, длина которого короче значения wMaxPacketSize в конечной точке элемента управления, поведение в зависимости от типа контроллера узла выглядит следующим образом:
Этот флаг не следует устанавливать, если не задано USBD_TRANSFER_DIRECTION_IN. |
TransferBufferLength
Указывает длину (в байтах) буфера, указанного в Параметре TransferBuffer или описанного в разделе TransferBufferMDL. Драйвер хост-контроллера возвращает количество байтов, отправленных или считанных из канала в этом элементе.
TransferBuffer
Указатель на постоянный буфер для передачи или имеет значение NULL , если MDL предоставляется в TransferBufferMDL. Содержимое этого буфера зависит от значения Параметра TransferFlags. Если указан USBD_TRANSFER_DIRECTION_IN, этот буфер будет содержать данные, считываемые с устройства при возврате из драйвера контроллера узла. В противном случае этот буфер содержит предоставленные драйвером данные для передачи на устройство.
TransferBufferMDL
Указатель на MDL, описывающий постоянный буфер, или имеет значение NULL , если буфер предоставляется в TransferBuffer. Содержимое буфера зависит от значения Параметра TransferFlags. Если указан USBD_TRANSFER_DIRECTION_IN, описанный буфер будет содержать данные, считываемые с устройства при возврате из драйвера контроллера узла. В противном случае буфер содержит предоставленные драйвером данные для передачи на устройство. Этот MDL должен быть выделен из непагрегированного пула.
UrbLink
Зарезервировано. Не используется.
hca
Зарезервировано. Не используется.
RequestTypeReservedBits
Зарезервировано. Не используется.
Request
Указывает код запроса USB или поставщика для устройства, интерфейса, конечной точки или другого целевого объекта, определяемого устройством.
Value
Задает значение запроса, которое становится частью пакета установки, определяемого USB, для целевого объекта. Это значение определяется создателем кода, используемого в запросе.
Index
Указывает определяемый устройством индекс, возвращаемый успешным запросом конфигурации, если запрос предназначен для конечной точки или интерфейса. В противном случае значение Index должно быть равно нулю.
Reserved1
Зарезервировано. Не используется.
Комментарии
Драйверы могут использовать формат подпрограммы службы UsbBuildVendorRequest в этом URB.
Зарезервированные элементы этой структуры должны рассматриваться как непрозрачные и зарезервированы для использования системой.
Требования
Требование | Значение |
---|---|
Заголовок | usb.h (включая Usb.h) |