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_UrbAllocate、USBD_IsochUrbAllocateUSBD_SelectConfigUrbAllocateAndBuild、またはUSBD_SelectInterfaceUrbAllocateAndBuildを呼び出して URB を割り当てた場合、ドライバーは USBD_ASSIGNURBTOIOSTACKLOCATION を呼び出して、URB を IRP に関連付けられているIO_STACK_LOCATIONに関連付ける必要があります。 これらのルーチンによって割り当てられる URB の場合は、 IO_STACK_LOCATIONParameters.Others.Argument1 の設定 URB に置き換USBD_AssignUrbToIoStackLocation。 ( 「IOCTL_INTERNAL_USB_SUBMIT_URB」を参照)。

クライアント ドライバーは、スタック上 URB の割り当てなど、他のメカニズムを使用して割り当てられた URB のUSBD_AssignUrbToIoStackLocationを呼び出してはなりません。 それ以外の場合、USB ドライバー スタックはバグチェックを生成します。

クライアント ドライバーは、IoCallDriver を呼び出して要求を送信する前に、USBD_AssignUrbToIoStackLocationを呼び出す必要があります。 USBD_AssignUrbToIoStackLocation は、IRP の次のスタックの場所に URB を設定します。 ルーチンは、IO_STACK_LOCATIONFileObject メンバーも更新します。

コード例については、「 URB を送信する方法」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 8には WDK が必要です。 Windows Vista 以降のバージョンの Windows オペレーティング システムを対象としています。
対象プラットフォーム デスクトップ
Header usbdlib.h
Library Usbdex.lib
IRQL <=DISPATCH_LEVEL

こちらもご覧ください

URB の送信方法

USBD_IsochUrbAllocate

USBD_SelectConfigUrbAllocateAndBuild

USBD_SelectInterfaceUrbAllocateAndBuild

USBD_UrbAllocate