接続されているデバイスを判別するには – プログラミング – Home

接続されているデバイスを判別するには
 
通知
すべてクリア

接続されているデバイスを判別するには


ぶーかす
 ぶーかす
(@ぶーかす)
ゲスト
結合: 16年前
投稿: 2
Topic starter  

お力をお貸しください。

PCに接続されているデバイスが何であるかを判別する方法はありますでしょうか?
実際には、FD、CD-ROM、DVD-ROM、USB Memory …など何が接続されているかを知る方法
となります。

開発環境:
 WindowsXP
 VC++

宜しくお願いします。


引用解決済
トピックタグ
しま
 しま
(@しま)
ゲスト
結合: 18年前
投稿: 123
 

#コンパイラーのバージョンは忘れずに書いて下さいね

>PCに接続されているデバイスが何であるかを判別する方法
ないわけではありませんがあなたの望むようなものかどうかは判りません

GetDriveType:
http://msdn.microsoft.com/ja-jp/library/cc429310.aspx

だとか、

GetDeviceIoControl:
http://msdn.microsoft.com/ja-jp/library/cc429164.aspx

にある IOCTL_STORAGE_GET_MEDIA_TYPES でもOSが判別している結果は
ある程度取得できるが、100%確実に装置の種別が取得できると期待
してはいけないということがわかった上で使うようにお勧めします

たとえば、USB接続の記憶装置はOS自身(というよりはエクスプローラー)が
USBメモリーをさしても、MOドライブだと誤って表示することがあります
また、CFやSDやのリーダーライターをUSB接続している場合、実際に記憶媒体を
挿さなければUSBメモリーとは違ってディスク容量が得られません
つまり GetDriveType で判断しようとしても媒体が非固定な装置ということ
以上はたぶん判りません(FD,MO との区別もつかないでしょう)

又、USB接続のフロッピー互換(FDの読み書きも可能な)装置の場合、
媒体が入ってなければ装置の能力が判っても使用者がFDを使うか
高密度FD媒体(100M~120MB)を使うかは予測できませんのでFDなのか
高密度FDなのかは不明ということです


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

要するに「デバイスマネージャ」を作りたいということかな?
WMI を調べて味噌。ただサンプルはVBばっかりなんだよなー。


返信引用
金魚ちゃん
 金魚ちゃん
(@金魚ちゃん)
ゲスト
結合: 16年前
投稿: 52
 

>FD、CD-ROM、DVD-ROM、USB Memory …など何が接続されているかを知る方法
GetDeviceIoControl()関数で IOCTL_CDROM_DISK_TYPE を取得可能。

IOCTL_CDROM_DISK_TYPE(Discタイプ取得)
CD-ROM、CD-R
DVD-ROM、DVD-R、DVD-RAM、DVR-RW(フォーマット済み)、DVR-RW(シーケンシャル記録)
DVD+R、DVD+RW
などが判別可能らしい。
http://www.h5.dion.ne.jp/~sfsf11/spti.html

これを利用するには DDK が必要だって。
Microsoft社に注文しなければならないようです。
※注文の仕方だれか教えてくれないかな。僕にも。


返信引用
ぶーかす
 ぶーかす
(@ぶーかす)
ゲスト
結合: 16年前
投稿: 2
Topic starter  

皆様、情報ありがとうございます。

> 要するに「デバイスマネージャ」を作りたいということかな?

はい、そうです。
デバイスの一覧を作成し、その中から自分が必要とする FD、CD-ROM、DVD-ROM、USB
Memory …を抽出して、最終的にはドライブレターが取得できれば嬉しいです。

頂いた情報 GetDeviceIoControl等ですと、USBで接続されているリムーバブル系デバイス
の見分けが出来ないのかなぁ…という状況です。

現在、SetupDiGetDeviceRegistryProperty などで引き続き挑戦中です。
上手き行きましたら報告させて頂きます。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> これを利用するには DDK が必要だって。
> Microsoft社に注文しなければならないようです。

最新の DDK は無料でダウンロードできます。
https://connect.microsoft.com/site/sitehome.aspx?SiteID=148


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

ちょっと情報が古いようですよ>金魚ちゃん
http://www.google.co.jp/search?hl=ja&q=DDK+ダウンロード&lr=&aq=f&oq=

ドライブ名がマウントされていない状態 (=未初期化ハードディスク等) では
\\.\D: は開けないわけで \\.\PhysicalDriveX とかその辺が必要になる。
そこまでやってくなら WMI 推奨


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました