- 締切済み
プログラムでUSB機器が接続された事を認識するにはどうしたら良いのでしょうか?
プログラムでUSB機器が接続された事を認識するにはどうしたら良いのでしょうか? デバイスマネージャの出すメッセージを受け取る様にするのだと思うのですが、どうやって、どのメッセージを処理すのでしょう。 よろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- 2ch
- ベストアンサー率51% (64/125)
さてさて、お手上げデスダよ。 自宅に帰ってから、いろいろUSBを試してみたものの、取れねぇーズラよ うーむC掲示板に書いたほうが、ズバリを得られるかもしれぬ。 参考URLを得たり、ソースを得たら、VBにコンバートしてみてはどう? ドライバは設計したことねぇズラし、サンプルもあまり転がってないのネ。 むずいズラよー
- 2ch
- ベストアンサー率51% (64/125)
それらしき情報 http://www.osr.com/ntinsider/1998/Converting/converting.htm ちなみに IRP系のメッセージはどこで聞いたの? 逆に参考URL求む
補足
これらはデバドラが処理するもののようです。 でも、ここらへんぐらいしか手掛かりがなくて。 デバイスドライバ関連の雑誌とかページとかに載ってます。 たとえば、 http://www5a.biglobe.ne.jp/~crab/winddk/pnp.html とか。 ちょっと見たところ上記のページはWDMドライバの説明のような?英語が得意ではないので、もうちょっとじっくり読んでみないとはっきりしませんが・・・
- 2ch
- ベストアンサー率51% (64/125)
>IRP_MN_MOUNT_VOLUME/IRP_MN_REMOVE_DEVICE ぬぉ、知らなかった。 メッセージ発行してるのネ。 SetWindowsHookExで取れるのかな?
- 2ch
- ベストアンサー率51% (64/125)
ここは見た?
補足
ドライバ関係はあれこれ調べてみました。 ドライバでは"IRP_MN_QUERY_START_DEVICE"または "IRP_MN_MOUNT_VOLUME"とか"IRP_MN_REMOVE_DEVICE" とかのメッセージが捕まえられるようです。 アプリではどうしたらよいのやら・・・。
- 2ch
- ベストアンサー率51% (64/125)
http://oshiete1.goo.ne.jp/kotaeru.php3?q=505982 という過去スレがあるけど、USB接続機器の認識後の操作なら可能かと思われ。 ていうか、装置の脱着だけ捕らえたらいいわけ?
補足
OnLine,OffLineの切り換えをするために装置の接続状態を取得したいと思っているのですけど・・・・・
- 2ch
- ベストアンサー率51% (64/125)
最新のMSDNを持っているなら説明が載っています。(英語) 直接USBのホストコントローラを制御しないといけないので、VisualBasicでは不可能です。VC++でないと無理っぽ
お礼
ありがとうございます。やはりVisualBasicのみでは無理でしょうか。 もっと簡単に考えていたのですが、あれこれ探してもほとんど情報がないところを見ると一般的な仕様ではないのかも。仕様自体見直すべきかもしれません。
補足
いろいろ調べてちょっとわかってきました。 vc++ではCWnd::OnDeviceChangeイベントが発生するようですが、VBでは取れないもののようです。 でもVBで取れないイベントをwin32APIのSetWindowLong関数で取得できるようになるらしいです。 http://tokyo.cool.ne.jp/kanain/APIHTM/GetMsg.html http://www.vbvbvb.com/jp/gtips/0501/gSetWindowLongEnLink.html とりあえずここらを調べて何とかなりそうかな? いろいろありがとうございました。