Windows(XP-7)では、C++でUSBフロッピードライブとUSBフラッシュドライブをプログラム的に区別する確実な方法はありますか?WindowsでUSBフロッピードライブとUSBフラッシュドライブをプログラムで区別する
現時点では、新しいWin32_LogicalDisk
インスタンスが検出されたときにWMIを使用して、LogicalDiskオブジェクトのDriveType属性を使用して基本タイプを把握しています。フロッピードライブとUSBフラッシュドライブの両方がDriveType DRIVE_REMOVABLE
であることを除けば、これはかなりうまくいきます(フロッピーとフラッシュを区別するために、私はIOCTL_STORAGE_GET_HOTPLUG_INFO
インターフェイスを使ってデバイスがホットプラグ可能かどうかを調べています)プリンシパルでは、フラッシュドライブではなくフロッピーであることを意味していました。ここでも、内部フロッピードライブの場合、これはかなりうまくいくと思います(情報を取得するためにWDK APIとWMIの両方を使用すると少し効率が悪いと思いますが)。残念ながらUSBフロッピードライブも多くの時間ホットプラグ可能です。私が見ることができるフラッシュとUSBフロッピードライブを区別する明確な方法はありません。私は、がかもしれないというプロパティがあることを知っています。予約されたドライブA:またはBにマッピングされているかどうかをチェックするのと同じですか(編集:フロッピードライブが確実にあれば--参照)もう少し信頼できるものが本当に好きです。
長い説明は申し訳ありませんが、明確になりたかっただけです!ありがとう
A:とB:は、floppies_の_reservedですか?ソース? – MSalters
私はこれを[MS-KB:Windows XPでドライブ文字の割り当てを変更する方法](http://support.microsoft.com/kb/307844)から入手しました。マシンにフロッピードライブがない場合は、他のドライブに使用されている可能性があります。間違いなく、誤った名称でドライブがフロッピードライブであるかどうかを示すものではありません。私は質問を少し明瞭にするために言い直します。 – user82116
これは、ドライブレターを手動で変更しているユーザーの視点からのものです。その後、OSの観点から考えていました。 – MSalters