tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: プラグアンドプレイでポートの開放、切断をしたい
投稿日: 2010/06/03(Thu) 21:50
投稿者K.J.K.
> このコードを理解しつつうまくプラグアンドプレイを認識させるよう努力します。

動くかどうかは確認していません。ですから、まだ結論を出すのは早すぎます。

まず提示したコードですが、こちらの環境下では XP 以降で使える機能を
利用するようにしています。というのも提示した GUID: GUID_DEVINTERFACE_USB_DEVICE
では RegisterDeviceNotification の呼び出しに失敗したからです。

これで上手く行く環境ならばそれでもいいのですが、失敗した場合には
どこを換えていくのかも考えないといけません。

まず、上記コードでうまく行った場合は、USB デバイスを抜き差しすると発生する
イベントの DeviceArrival や DeviceRemoveComplete の発生回数が増えます。
おそらくそのときは、イベントプロシージャの第一引数の DeviceType が 5 に
なっていると思います。これが USB デバイスそのものの抜き差しをあらわします。

しかし上手く行かない場合もあり得ます。API関数の RegisterDeviceNotification
の戻り値が 0 の場合です。こうなると別の GUID を探して指定しなければなりません。

目視で探すのであれば、regedit を起動して、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
より2段階下のキーを一つずつ調べて、該当すると思われるデバイスを "DeviceDisc"
フィールドから探して、それらしいものが見つかったらそのときの "ClassGUID" の値を
記録し、その GUID を With uFilter.GUID 以下で指定してください。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。