функция USBD_AssignUrbToIoStackLocation (usbdlib.h)
Подпрограмма USBD_AssignUrbToIoStackLocation вызывается драйвером клиента для связывания URB со следующим расположением стека IRP.
Синтаксис
void USBD_AssignUrbToIoStackLocation(
[in] USBD_HANDLE USBDHandle,
[in] PIO_STACK_LOCATION IoStackLocation,
[in] PURB Urb
);
Параметры
[in] USBDHandle
Дескриптор USBD, полученный в предыдущем вызове подпрограммы USBD_CreateHandle.
[in] IoStackLocation
Указатель на следующее расположение стека IRP (IO_STACK_LOCATION). Драйвер клиента получил указатель на расположение стека в предыдущем вызове IoGetNextIrpStackLocation.
[in] Urb
Указатель на структуру URB, выделенную USBD_UrbAllocate, USBD_IsochUrbAllocate, USBD_SelectConfigUrbAllocateAndBuildили USBD_SelectInterfaceUrbAllocateAndBuild.
Возвращаемое значение
Никакой
Замечания
Если драйвер клиента выделил URB путем вызова USBD_UrbAllocate, USBD_IsochUrbAllocate, USBD_SelectConfigUrbAllocateAndBuildили USBD_SelectInterfaceUrbAllocateAndBuild, драйвер должен вызвать USBD_AssignUrbToIoStackLocation связать URB с IO_STACK_LOCATION, связанной с IRP. Для URI, выделенных этими подпрограммами, USBD_AssignUrbToIoStackLocation заменяет параметр Parameters.Others.Argument1IO_STACK_LOCATION на URB. (см. IOCTL_INTERNAL_USB_SUBMIT_URB).
Драйвер клиента должен не вызывать USBD_AssignUrbToIoStackLocation для URB, выделенного с помощью других механизмов, таких как выделение URB в стеке. В противном случае стек USB-драйверов создает ошибку.
Драйвер клиента должен вызывать USBD_AssignUrbToIoStackLocation перед вызовом IoCallDriver для отправки запроса. USBD_AssignUrbToIoStackLocation заполняет следующее расположение стека IRP с помощью URB. Подпрограмма также обновляет элемент FileObjectIO_STACK_LOCATION.
Пример кода см. в разделе ОтправкаURB.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Требуется WDK для Windows 8. Предназначено для Windows Vista и более поздних версий операционной системы Windows. |
целевая платформа | Настольный |
заголовка | usbdlib.h |
библиотеки | Usbdex.lib |
IRQL | <=DISPATCH_LEVEL |
См. также
Отправка URB
USBD_SelectConfigUrbAllocateAndBuild