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 呼叫 USBD_AssignUrbToIoStackLocation ,例如配置堆疊上的 URB。 否則,USB 驅動程式堆疊會產生錯誤檢查。
用戶端驅動程序必須先呼叫 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