初めて自分の家と他人の家が違う、と意識した時

VC++を使用しています。
Win32コンソールアプリケーションでUSBメモリが接続されたとき、ある特定の処理を行いたいのですが、USBメモリが接続されたことを認識する方法がわかりません。

私の努力不足かもしれませんが、WinAPIやWin32APIなどを探してみましたが、そのようなことができる関数は見つかりませんでした。

どのようにすればよいかわかる方がいらっしゃいましたら、ご教授お願いします。

A 回答 (3件)

ぱっと思いつくところでは、システムに接続されているドライブレターの一覧を取得すると言う方法があります。



https://blog.goo.ne.jp/masaki_goo_2006/e/243664c …

ただしこの方法だけではどれがUSBメモリかを判別できない問題があります。なのでさらにもう一段階、そのドライブの種類を取得する必要もあります。

https://msdn.microsoft.com/ja-jp/library/cc42813 …
    • good
    • 0

>接続されたことを認識する方法


認識というのは通知を受ける、ですか?

そのようなアプリケーションを見たこと無いですが、
WINアプリ側でメッセージ捕またって書いてる人が居るようなので(古いけど)、そこら辺が手がかりでしょう↓

WM_DEVICECHANGE の DBT_DEVICEARRIVAL と DBT_DEVICEREMOVECOMPLETEについて
https://social.msdn.microsoft.com/Forums/ja-JP/2 …
    • good
    • 1

通常、USBなどのハードウエアは、それ専用のデバイス・ドライバーというソフトで制御していると思います。


それは、OSから見たら、オプションソフトなので、WinAPIとかWin32APIを見ても載っていないはずです。
たとえば、Windowsじゃあなく、MS-DOSが主流の時代、電話回線で通信するためにRS-232C用の特別なハードウエアを使うことがあり、そのドライバーソフトはアセンブラでコーディングしていました。
そして通信するためには、通信用のICを制御する必要があるわけですけど、当然、そんなハードウエア用のAPIなんて、OSに存在するわけありません。
必要なAPIは、自分でコーディングしたドライバに組み込み、それをC言語などから呼び出すことになるわけです。
まあ、もしかしたら、現在ならUSB関係のある程度統一したAPIがあるのかもしれませんけどね。

なお、昔、USB関連の装置をプログラムから操作する処理の特集記事がトランジスタ技術か、なにかの雑誌に掲載されていた気がします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報