次の方法で共有


USBD_CreateConfigurationRequestEx関数 (usbdlib.h)

USBD_CreateConfigurationRequestEx ルーチンは、URB を割り当てて書式設定し、USB デバイスの構成を選択します。

USBD_CreateConfigurationRequestExUSBD_CreateConfigurationRequestを置き換えます。

構文

PURB USBD_CreateConfigurationRequestEx(
  [in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
  [in] PUSBD_INTERFACE_LIST_ENTRY    InterfaceList
);

パラメーター

[in] ConfigurationDescriptor

選択する構成の構成記述子を含む呼び出し元によって割り当てられた USB_CONFIGURATION_DESCRIPTOR 構造体へのポインター。 通常、クライアント ドライバーは、USB デバイスから構成、インターフェイス、エンドポイント、ベンダー、およびクラス固有の記述子に関する情報を取得するために、URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE型の URB (_URB_CONTROL_DESCRIPTOR_REQUESTを参照) を送信します。 クライアント ドライバーが記述子の種類としてUSB_CONFIGURATION_DESCRIPTOR_TYPEを指定すると、要求は USB_CONFIGURATION_DESCRIPTOR 構造体内のすべてのデバイス情報を取得します。 ドライバーは、ConfigurationDescriptor パラメーターの USB_CONFIGURATION_DESCRIPTOR 構造体に受信したポインターを渡します。

[in] InterfaceList

USBD_INTERFACE_LIST_ENTRY 構造体の呼び出し元によって割り当てられた配列の最初の要素へのポインター。 配列の長さは、構成記述子内のインターフェイスの数によって異なります。 配列内の要素の数は、構成内のインターフェイスの数よりも 1 つ多くする必要があります。 RtlZeroMemory 呼び出して配列を初期化します。 配列内の最後の要素の InterfaceDescriptor メンバーは、NULL 設定する必要があります。

戻り値

USBD_CreateConfigurationRequestEx は、URB 構造体を割り当て、URB_FUNCTION_SELECT_CONFIGURATION要求 (select-configuration 要求) 用に書式設定し、URBへのポインターを返します。 クライアント ドライバーは、返された URB を使用して、構成を設定するホスト コントローラー ドライバーに構成の選択要求を送信できます。 使用が完了したら、URB を解放する必要があります。

備考

構成の選択要求とコード例をビルドする方法については、「USB デバイスの構成を選択する方法を参照してください。

返される値は、URB 構造体へのポインターです。これを使用して、選択構成要求をホスト コントローラー ドライバーに送信して、指定した構成を設定できます。

USB ドライバー スタックが選択構成要求を完了したら、USBD_INTERFACE_INFORMATION 構造を調べることができます。 パイプUSBD_INTERFACE_INFORMATION のメンバーは、USBD_PIPE_INFORMATION 構造体の配列を指します。 USB バス ドライバーは、インターフェイスのエンドポイントに関連付けられているパイプに関する情報を USBD_PIPE_INFORMATION 構造体の配列を埋めます。 クライアント ドライバーは、Pipes[i].PipeHandle からパイプ ハンドルを取得し、それらを使用して特定のパイプに I/O 要求を送信できます。

返された URBを使用してすべての操作を完了したら、ExFreePool を呼び出して、URB解放する必要があります。

非ページ プールまたはページ プールから構成記述子と配列を割り当てることができます。 このルーチンの呼び出し元は、ConfigurationDescriptor によって指されるメモリと、InterfaceList が非ページ プールから割り当てられている場合、IRQL <= DISPATCH_LEVELで実行できます。 それ以外の場合、呼び出し元は IRQL < DISPATCH_LEVEL で実行する必要があります。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー usbdlib.h (Usbdlib.h を含む)
ライブラリ Usbd.lib
IRQL DISPATCH_LEVEL (解説を参照)

関連項目

USB デバイスの構成を選択する方法

USB デバイス ドライバー プログラミング リファレンス

USBD_INTERFACE_INFORMATION

_URB_SELECT_CONFIGURATION