テクニカル ドキュメント #38



Doc ID: 38
製品: WinDriver
Version:  --

Kernel PlugIn で、WD_Transfer() および WD_UsbTransfer() を呼ぶ際に、これらの関数へ渡すために、hWD をどこで取得しますか?

Kernel PlugIn から WinDriver のカーネル モジュール (hWD) へのハンドルを取得するには、以下の何れかを実行してください:
  • Kernel PlugIn から直接 WD_Open() を呼びます。

    注意: WD_UsbTransfer() 関数は、WinDriver v5.22 以前まで使用されていた古い USB API です。Kernel PlugIn から WinDriver v6.00 以降の USB API を使用することはできません。Kernel PlugIn から、WD_UsbTransfer() 関数などの古い WinDriver USB API を呼ぶには、このオプションを使用する必要があります。たとえば、Kernel PlugIn で使用できる WinDriver へのハンドルを取得するには、カーネルで直接 WD_Open () 関数を呼びます。WinDriver USB 関数でユーザー モードから渡されるハンドルを使用することはできません。

  • PCI/ISA の場合、WD_KernelPlugInOpen() でユーザー モードから渡され、Kernel PlugIn のコールバック関数 KP_Open() 関数の2番目の引数として受信される hWD ハンドルを使用することもできます。

    もう一方は、WD_KERNEL_PLUGIN_CALL 構造体の pData フィールドを使用して、ユーザー モードから Kernel PlugIn へハンドルを渡すこともできます。ユーザー モードで WD_KernelPlugInCall() 関数への呼び出しに使用され、Kernel PlugIn の KP_Call() へのコールバックの結果です。
WinDriver へのハンドルを取得後、WD_Transfer() / WD_UsbTransfer() 関数 (または、引数として WinDriver へのハンドルを受信する WinDriver API) への呼び出しはユーザー モードと同様です。