структура _URB_CONTROL_TRANSFER_EX (usb.h)
Структура _URB_CONTROL_TRANSFER_EX используется драйверами USB-клиента для передачи данных в канал управления или из нее с превышением времени ожидания, которое ограничивает допустимое время передачи.
Синтаксис
struct _URB_CONTROL_TRANSFER_EX {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
ULONG Timeout;
ULONG Pad;
struct _URB_HCD_AREA hca;
UCHAR SetupPacket[8];
};
Члены
Hdr
Указатель на структуру _URB_HEADER , указывающую сведения о заголовке URB. Hdr.Function должен быть URB_FUNCTION_CONTROL_TRANSFER_EX, а Hdr.Length — sizeof(_URB_CONTROL_TRANSFER_EX)
.
PipeHandle
Дескриптор для канала.
Если target является конечной точкой управления по умолчанию, pipeHandle должен иметь значение NULL. В этом случае transferFlags должен содержать флаг USBD_DEFAULT_PIPE_TRANSFER.
Если target является конечной точкой элемента управления, отличной от конечной точки по умолчанию, PipeHandle указывает непрозрачный дескриптор для канала управления. Драйвер контроллера узла возвращает этот дескриптор, когда драйвер клиента выбирает конфигурацию устройства с URB типа URB_FUNCTION_SELECT_CONFIGURATION или когда драйвер клиента изменяет параметры интерфейса с URB типа URB_FUNCTION_SELECT_INTERFACE.
TransferFlags
Задает ноль, единицу или сочетание следующих флагов:
Значение | Значение |
---|---|
|
Задано для запроса данных с устройства. Для передачи данных на устройство этот флаг должен быть снят. |
|
Задано для передачи данных на устройство. Установка этого флага эквивалентна снятию флага USBD_TRANSFER_DIRECTION_IN. |
|
Задано, чтобы контроллер узла не возвращал ошибку при получении пакета от устройства, который короче максимального размера пакета для конечной точки. Максимальный размер пакета для конечной точки указывается в элементе bMaxPacketSize0 структуры USB_DEVICE_DESCRIPTOR (дескриптор устройства) для конечной точки управления по умолчанию. Для конечной точки управления, отличной от используемой по умолчанию, максимальный размер пакета задается в элементе wMaxPacketSize структуры USB_ENDPOINT_DESCRIPTOR (дескриптор конечной точки).
Когда контроллер узла получает пакет, длина которого короче значения wMaxPacketSize в конечной точке элемента управления, поведение в зависимости от типа контроллера узла выглядит следующим образом:
|
|
Задано для указания контроллера узла для выполнения передачи элементов управления по каналу управления по умолчанию. Это позволяет вызывающей стороны отправлять команды в канал управления по умолчанию без явного указания дескриптора канала. |
TransferBufferLength
Указывает длину (в байтах) буфера, указанного в Параметре TransferBuffer или описанного в разделе TransferBufferMDL. Драйвер хост-контроллера возвращает количество байтов, отправленных или считанных из канала в этом элементе.
TransferBuffer
Указатель на постоянный буфер для передачи или имеет значение NULL , если MDL предоставляется в TransferBufferMDL. Содержимое этого буфера зависит от значения Параметра TransferFlags. Если указан USBD_TRANSFER_DIRECTION_IN, этот буфер будет содержать данные, считываемые с устройства при возврате из драйвера контроллера узла. В противном случае этот буфер содержит предоставленные драйвером данные для передачи на устройство.
TransferBufferMDL
Указатель на MDL, описывающий постоянный буфер, или имеет значение NULL , если буфер предоставляется в TransferBuffer. Содержимое буфера зависит от значения Параметра TransferFlags. Если указан USBD_TRANSFER_DIRECTION_IN, описанный буфер будет содержать данные, считываемые с устройства при возврате из драйвера контроллера узла. В противном случае буфер содержит предоставленные драйвером данные для передачи на устройство. Этот MDL должен быть выделен из непагрегированного пула.
Timeout
Указывает время (в миллисекундах) до истечения времени ожидания URB. Значение 0 указывает на отсутствие времени ожидания для этого URB.
Pad
Зарезервировано. Не используется.
hca
Зарезервировано. Не используется.
SetupPacket[8]
Указывает определенный USB-пакет установки запроса. Формат пакета установки запроса USB можно найти в спецификации usb-ядра.
Комментарии
Эта структура URB идентична _URB_CONTROL_TRANSFER, за исключением того, что элемент Timeout устанавливает время ожидания для URB.
Зарезервированные элементы этой структуры должны рассматриваться как непрозрачные и зарезервированы для использования системой.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Операционных системах Windows Vista и более поздних версий. |
Верхняя часть | usb.h (включая Usb.h) |