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 の場合は、 IO_STACK_LOCATION の Parameters.Others.Argument1 の設定 を URB に置き換USBD_AssignUrbToIoStackLocation。 ( 「IOCTL_INTERNAL_USB_SUBMIT_URB」を参照)。
クライアント ドライバーは、スタック上の URB の割り当てなど、他のメカニズムを使用して割り当てられた URB のUSBD_AssignUrbToIoStackLocationを呼び出してはなりません。 それ以外の場合、USB ドライバー スタックはバグチェックを生成します。
クライアント ドライバーは、IoCallDriver を呼び出して要求を送信する前に、USBD_AssignUrbToIoStackLocationを呼び出す必要があります。 USBD_AssignUrbToIoStackLocation は、IRP の次のスタックの場所に URB を設定します。 ルーチンは、IO_STACK_LOCATIONの FileObject メンバーも更新します。
コード例については、「 URB を送信する方法」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8には WDK が必要です。 Windows Vista 以降のバージョンの Windows オペレーティング システムを対象としています。 |
対象プラットフォーム | デスクトップ |
Header | usbdlib.h |
Library | Usbdex.lib |
IRQL | <=DISPATCH_LEVEL |
こちらもご覧ください
USBD_SelectConfigUrbAllocateAndBuild