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_IsochUrbAllocate、USBD_SelectConfigUrbAllocateAndBuild或 USBD_SelectInterfaceUrbAllocateAndBuild分配的 URB 结构的指针。
返回值
没有
言论
如果客户端驱动程序通过调用 USBD_UrbAllocate、USBD_IsochUrbAllocate、USBD_SelectConfigUrbAllocateAndBuild或 USBD_SelectInterfaceUrbAllocateAndBuild分配了 URB,则驱动程序 必须 调用 USBD_AssignUrbToIoStackLocation 将 URB 与与 IRP 关联的 IO_STACK_LOCATION 相关联。 对于由这些例程分配的 URB,USBD_AssignUrbToIoStackLocation 将 Parameters.Others.Argument1IO_STACK_LOCATION 设置为 URB。 (见 IOCTL_INTERNAL_USB_SUBMIT_URB)。
客户端驱动程序必须 不 使用其他机制(例如在堆栈上分配 URB)分配的 URB 调用 USBD_AssignUrbToIoStackLocation。 否则,USB 驱动程序堆栈将生成 bug 检查。
客户端驱动程序必须先调用 USBD_AssignUrbToIoStackLocation,然后才能调用 IoCallDriver 以发送请求。 USBD_AssignUrbToIoStackLocation 使用 URB 填充 IRP 的下一个堆栈位置。 该例程还会更新 IO_STACK_LOCATION的 FileObject 成员。
有关代码示例,请参阅 如何提交 URB。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 需要适用于 Windows 8 的 WDK。 面向 Windows Vista 和更高版本的 Windows作系统。 |
目标平台 | 桌面 |
标头 | usbdlib.h |
库 | Usbdex.lib |
IRQL | <=DISPATCH_LEVEL |
另请参阅
USBD_SelectConfigUrbAllocateAndBuild