WinXPの中のどのUSBマスストレージデバイスに対応したドライブの検索

StackOverflow https://stackoverflow.com/questions/733206

質問

私はWinXPのSP3コンピュータに接続された複数のUSBドライブを持っている、と私は離れてプログラム的にそれらを指示する必要があります - の私は〜にどのデバイスの(この場合は、一つのデバイスに対応するドライブ文字を見つける必要があります1巻)。私はこのような何かを探して、そのボリュームIDとドライブ文字mountvolを使用して取得することができます:

C:\WINDOWS\> mountvol
\\?\Volume{bdb681b2-1ddf-11dd-bf71-806d6172696f}\
    C:\

\\?\Volume{6a8784f8-7406-11dd-a8c3-001e8c829b67}\
    A:\

また、 DEVCON に使用したり、デバイスマネージャ、私は、デバイスIDを見ることができます:

C:\WINDOWS\> devcon resources *STOR*
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM
    Name: Generic volume
STORAGE\VOLUME\1&30A96598&0&SIGNATURED84ED84EOFFSET7E00LENGTH2543150400
    Name: Generic volume
USBSTOR\DISK&VEN_KINGSTON&PROD_DATATRAVELER2.0&REV_1.00\0803240752536&0
    Name: Kingston DataTraveler2.0 USB Device

しかし、私は、デバイスIDとボリュームID /手紙をリンクする方法を発見していない「ハードウェアの安全な取り外し」ダイアログのように(したがって、私はそれが可能だと仮定)します:


<サブ>(ソース: piskvor.org の)

ご覧の通り、

、これらは私がDEVCONとMOUNTVOLが見るのと同じ音量で見る同じデバイスです。これまでのところ、私はそれらの間のリンクを発見していない。

私は「=いくつかの関連する questions のが、これらはあなたが見つけるどんなアプローチ」を使用しているように見えます最初に接続された複数の類似のデバイス(同じベンダー、多くの場合、同じ製品タイプ)があるでしょうから、私の場合に非常に有用ではないUSBデバイス」、である。

<時間>

編集ます:

@ MSalters の」答えは有望に見える:XPでは、HKEY_LOCAL_MACHINE\SYSTEM\MountedDevicesREG_BINARY\DosDevices\x:xがどこにある[AZ])があります。コメントは、正しいデバイスの(UTF-16)の名前である(例えば
\DosDevices\A:
に対応=「\??\STORAGE#RemovableMedia#7&190c24e5&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\"、 デバイスリストに上記見STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM)。

それが進むべき道だかどうかを確認します。

役に立ちましたか?

解決

これは非自明な質問ですね。そのための公式のAPIは、私の知る限り、ありません。レジストリ:だから、あなたは文書化されていないAPIを必要としています。 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevicesは、ドライブ文字とボリュームIDの両方のエントリが含まれています。あなたは、実際のデータを見れば、あなたはそれがドライブを識別することがわかります。 Unicode文字列としてバイナリデータを見てください。それはあなたがHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ENUM\を指します。しかし、XPとVistaはサブキーがどのようにそこに参照されており、正確に何が異なります。 (Vistaは簡単ですので、それは最初にしてみてください)。

他のヒント

これを行うには公式のAPIがあります。このサンプルを参照してください。 http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspxする

原則は、Windows上の各ストレージボリュームは、グローバル番号が割り当てられていることです。まず、あなたはその数のためにあなたのドライブを聞いて(開いて、「\ X:」とIOCTL_STORAGE_GET_DEVICE_NUMBER要求を送信します)。第二に、あなたはすべてのディスク・デバイス上に行くと(それを開くことで、異なる経路を通って、あなただけの文字列比較することはできませんので)その番号のそれぞれをお願いします。

あなたがあなたのドライブを照会と同じ番号を持つディスクデバイスを見つけたら、あなたが勝者を持って知っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top