WinUsb_Initialize関数 (winusb.h)

WinUsb_Initialize関数は、ファイル ハンドルで指定されたデバイスの WinUSB ハンドルを作成します。

構文

BOOL WinUsb_Initialize(
  [in]  HANDLE                   DeviceHandle,
  [out] PWINUSB_INTERFACE_HANDLE InterfaceHandle
);

パラメーター

[in] DeviceHandle

CreateFile が返したデバイスへのハンドル。 WinUSB では重複する I/O が使用されるため、DeviceHandleCreateFile 呼び出しの dwFlagsAndAttributes パラメーターにFILE_FLAG_OVERLAPPEDを指定して、WinUsb_Initializeが正しく機能するために必要な特性を持つ必要があります。

[out] InterfaceHandle

デバイス上の最初の (既定の) インターフェイスへの不透明なハンドルを受け取ります。 このハンドルは、既定のインターフェイスで操作を実行する他の WinUSB ルーチンで必要です。 ハンドルを解放するには、 WinUSB_Free 関数を呼び出します。

戻り値

操作が 成功した場合、WinUsb_Initializeは TRUE を 返します。 それ以外の場合、このルーチンは FALSE を返し、呼び出し元は GetLastError を呼び出すことによってログに記録されたエラーを取得できます。

GetLastError は 、次のエラー コードを返すことができます。

リターン コード 説明
ERROR_INVALID_HANDLE
呼び出し元は、DeviceHandle パラメーターで NULL または無効なハンドルを渡しました。FILE_FLAG_OVERLAPPEDがファイル ハンドルに設定されていません。
ERROR_NOT_ENOUGH_MEMORY
操作を実行するためのメモリが不足していることを示します。
ERROR_BAD_DEVICE
デバイスの既定のインターフェイス記述子が見つからなかったことを示します。

注釈

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

こちらもご覧ください

WinUSB

WinUSB 関数

WinUSB_Free