SetupAPI

2010年02月26日

WinUSB を使おう10~番外SetupAPI編~

なんでいきなり番外編かというと
ここでも実は難関が待ち構えているのです。

バイブル「WinUsb_howto.docx」の「Obtain a Handle to the Device and Initialize WinUSB」にもあるんですが

「infファイルで設定したDeviceinterfaceGUIDをつかってね」
ってな感じです。

いったいどうやるんだよって話で「SetupAPI」が出てきます。
Deviceは接続した時点でPnP Manegerが認識しています。
PnP ManegerからGUIDでお目当てのDevice情報を引っ張ってくる役目なのがこの「SetupAPI」ぽいですね。
そんなことが書いてあるのがこちら

ちなみDriverなしでもUSBの状態は「USBView.exe」で見れたりします。「WINDDK\BuildNumber\Debuggers」
使い方はこちらにかいてあるので参照ください。

手順的にはこうなります
(1)Setupapi.libをリンク
「WINDDK\BuildNumber\lib\OS別
(2)Setupapi.hをインクルード
「WINDDK\BuildNumber\inc\api」
(BuildNumberはDDKのVersionのことです)
この記事記載時は7600.16385.0です。


これで「DevicePath」が得られるわけです。

まっこれはバイブルのSampleコードかあるいはDDKのSampleコードを参考に作りましょう。

必ず必要ならいワンコールでOKなAPIを作ってほしいですよね。。。。(ぶつぶつ)なんだか面倒ですよこれ。
WDM時代からの負の遺産なのかな。

この「DevicePath」を「CreateFile」に渡してやっと「Device Object Handle」ができます!!!

ここの話はWindows Device Driver 共通の話ですね。




ayuthky_m at 14:48|PermalinkComments(0)TrackBack(0)