昨日の続きです。
HIDクラス・デバイスを表す「パス名」のリストからスタートです。
STEP4 : 後片付けを忘れずに
前回、入手した「鍵のリスト」は、「パス名のリスト」が手に入った今となっては不要です。
不要になったからといって、放っておくと、メモリがどんどん消費されてしまいます。
不要になったら、きちんと捨てる。
これが、Winodwsの流儀です。
「鍵のリスト」を廃棄するための関数は、
SetupDiDestroyDeviceInfoList()です。
ここまでの手順は、
DeviceManagement.FindDeviceFromGuidにあります。
何も考えずに使わせてもらっても動きます。
STEP5 : お目当てのデバイスを探せ
「パス名のリスト」が手に入ったので、ここからお目当てのデバイスを探します。
探し出すためには、「パス名」を元にファイルを開き、そのファイルの属性(Attribute)を調べます。
ファイルを開く関数は、一般のファイルと同じCreateFile()です。
宣言は、"FileIODeclaration.vb"に記述されています。
ファイルの属性を取り出す関数は、HidD_GetAttributes()です。
「お目当てのデバイス」を見つけるための手がかりとして使っているのが、
ベンダID (VenderID) とプロダクトID (ProductID) です。
この二つのIDが一致したときに、デバイスが見つかったと判断します。
属性を調べ終わったら、ファイルを閉じておきます。
ファイルを閉じる時に使う関数は、CloseHandle()です。
STEP6 : デバイス取り外し時のイベントを受け付けろ
USBデバイスは、動作中に抜き差ししても良いことになっているので、
抜かれた時に発生するイベントを受信する必要があります。
イベントを受信するオブジェクトを指定する関数は、
RegisterDeviceNotification()です。
この関数の呼び出しには、いくつ物手順を踏む必要があります。
お手本プログラムの"hidclass_vs5"の場合は、
"DeviceManagement.RegisterForDeviceNO