WinUsb_Initialize関数 (winusb.h)
WinUsb_Initialize関数は、ファイル ハンドルで指定されたデバイスの WinUSB ハンドルを作成します。
構文
BOOL WinUsb_Initialize(
[in] HANDLE DeviceHandle,
[out] PWINUSB_INTERFACE_HANDLE InterfaceHandle
);
パラメーター
[in] DeviceHandle
CreateFile が返したデバイスへのハンドル。 WinUSB では重複する I/O が使用されるため、DeviceHandle の CreateFile 呼び出しの dwFlagsAndAttributes パラメーターにFILE_FLAG_OVERLAPPEDを指定して、WinUsb_Initializeが正しく機能するために必要な特性を持つ必要があります。
[out] InterfaceHandle
デバイス上の最初の (既定の) インターフェイスへの不透明なハンドルを受け取ります。 このハンドルは、既定のインターフェイスで操作を実行する他の WinUSB ルーチンで必要です。 ハンドルを解放するには、 WinUSB_Free 関数を呼び出します。
戻り値
操作が 成功した場合、WinUsb_Initializeは TRUE を 返します。 それ以外の場合、このルーチンは FALSE を返し、呼び出し元は GetLastError を呼び出すことによってログに記録されたエラーを取得できます。
GetLastError は 、次のエラー コードを返すことができます。
リターン コード | 説明 |
---|---|
|
呼び出し元は、DeviceHandle パラメーターで NULL または無効なハンドルを渡しました。FILE_FLAG_OVERLAPPEDがファイル ハンドルに設定されていません。 |
|
操作を実行するためのメモリが不足していることを示します。 |
|
デバイスの既定のインターフェイス記述子が見つからなかったことを示します。 |
注釈
WinUsb_Initializeが呼び出されると、インターフェイスのポリシー設定が既定値にリセットされます。
WinUsb_Initialize呼び出しは、基になる USB スタックに対してさまざまな記述子を照会し、取得した記述子データを格納するのに十分なメモリを割り当てます。
WinUsb_Initialize 最初にデバイス記述子を取得してから、関連付けられている構成記述子を取得します。 構成記述子から、呼び出しは関連付けられているインターフェイス記述子を派生させ、それらを配列に格納します。 配列内のインターフェイスは、0 から始まるインデックスによって識別されます。 インデックス値 0 は最初のインターフェイス (既定のインターフェイス) を示し、値 1 は 2 番目に関連付けられたインターフェイスを示します。 WinUsb_Initialize エンドポイント記述子の既定のインターフェイス記述子を解析し、関連付けられているパイプや状態固有のデータなどの情報をキャッシュします。 InterfaceHandle パラメーターで受け取ったハンドルは、配列内の最初のインターフェイスに割り当てられたメモリ ブロックへのポインターです。
アプリケーションがデバイスで別のインターフェイスを使用する場合は、 WinUsb_GetAssociatedInterfaceを呼び出し、インターフェイスのインデックスを指定し、指定したインターフェイスに割り当てられたメモリ ブロックへのハンドルを取得する必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | winusb.h (Winusb.h を含む) |
Library | Winusb.lib |
[DLL] | Winusb.dll |