コンピューターに接続されている特定の USB デバイス (1 つ以上) を検索し、マウントされたドライブへの関連パスを取得しようとしています。理想的には、USB デバイスの VID/PID を見つけることですが、その方法はまだわかりません。以下は機能しますが、単一のクエリでデータを取得する方法が必要です。
ここで行っているのは、モデルが一致するHS SD Card Bridge USB Device
物理ドライブを探して、関連付けられている物理ドライブ番号を見つけ、それを使用してマウントされたパーティションを見つけることです..
foreach (ManagementObject disk in disks.Get()) {
//look for drives that match our string
Match m = Regex.Match(disk["model"].ToString(), "HS SD Card Bridge USB Device");
if (m.Success) {
m = Regex.Match(disk["DeviceID"].ToString(), @"PHYSICALDRIVE(\d+)");
if (m.Success) {
int driveNumber = Int32.Parse(m.Groups[1].ToString());
ManagementObjectSearcher mapping = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDiskToPartition");
foreach (ManagementObject map in mapping.Get()) {
m = Regex.Match(map["Antecedent"].ToString(), @"Disk #" + driveNumber + ",");
if (m.Success) {
string drive = map["Dependent"].ToString();
m = Regex.Match(drive, @"([A-Z]):");
if (m.Success) {
drive = m.Groups[1].ToString(); //< -- **FOUND**
}
}
}
//USBDevice dev = new USBDevice("", "");
// list.Items.Add();
Console.WriteLine("");
}
}
}
VID/PID からこれを行う方法と、1 つのクエリだけで済むように検索クエリを作成する方法はありますか?