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将 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_LOCATION 的 FileObject 成员。
有关代码示例,请参阅 如何提交 URB。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8需要 WDK。 面向 Windows Vista 和更高版本的 Windows 操作系统。 |
目标平台 | 桌面 |
标头 | usbdlib.h |
Library | Usbdex.lib |
IRQL | <=DISPATCH_LEVEL |
另请参阅
USBD_SelectConfigUrbAllocateAndBuild
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈