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_CreateHandle 例程的上一次调用中检索 USBD 句柄。

[in] IoStackLocation

指向 IRP 的下一个堆栈位置的指针 (IO_STACK_LOCATION) 。 客户端驱动程序在上次调用 IoGetNextIrpStackLocation 时收到了指向堆栈位置的指针。

[in] Urb

指向由USBD_UrbAllocate、USBD_IsochUrbAllocateUSBD_SelectConfigUrbAllocateAndBuild或USBD_SelectInterfaceUrbAllocateAndBuild分配的 URB 结构的指针

返回值

备注

如果客户端驱动程序通过调用 USBD_UrbAllocateUSBD_IsochUrbAllocateUSBD_SelectConfigUrbAllocateAndBuild 或 USBD_SelectInterfaceUrbAllocateAndBuild 来分配 URB,则驱动程序 必须 调用 USBD_AssignUrbToIoStackLocation 才能将 URB 与与 IRP 关联的 IO_STACK_LOCATION 相关联。 对于由这些例程分配的 URB,USBD_AssignUrbToIoStackLocation将 IO_STACK_LOCATION 的Parameters.Others.Argument1 设置为 URB。 (请参阅 IOCTL_INTERNAL_USB_SUBMIT_URB) 。

客户端驱动程序不得为使用其他机制(如在堆栈上分配 URB)分配的 URB 调用USBD_AssignUrbToIoStackLocation。 否则,USB 驱动程序堆栈将生成 bug 检查。

客户端驱动程序必须先调用 USBD_AssignUrbToIoStackLocation ,然后才能调用 IoCallDriver 以发送请求。 USBD_AssignUrbToIoStackLocation 使用 URB 填充 IRP 的下一个堆栈位置。 例程还会更新 IO_STACK_LOCATIONFileObject 成员。

有关代码示例,请参阅 如何提交 URB

要求

要求
最低受支持的客户端 Windows 8需要 WDK。 面向 Windows Vista 和更高版本的 Windows 操作系统。
目标平台 桌面
标头 usbdlib.h
Library Usbdex.lib
IRQL <=DISPATCH_LEVEL

另请参阅

如何提交 URB

USBD_IsochUrbAllocate

USBD_SelectConfigUrbAllocateAndBuild

USBD_SelectInterfaceUrbAllocateAndBuild

USBD_UrbAllocate