SATA、IDE、eSATAまたはFirewireを介して、接続されたドライブがUSB接続されているかどうか確認します。 WMIを使わずにそれを見つける方法はありますか?私はいくつかの情報を得るためにこのコードを使用しています。HDDがUSB経由で接続されているかWMIなしで他の手段で接続されているかを検出
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives) {
// DriveType.Fixed && DriveType.Removable
}
は、残念ながら、これは、すべてのHDDのUSB DriveType.Fixed
スルー接続のために戻って、唯一のUSBスティックはDriveType.Removable
であることを取得します。
私はこのようなものを探していると思います...私が実際に探しているものはわかりません。残念ながらGetVolumeInformation
は、私はWMIをスキップしたいInterfaceType
[DllImport("kernel32.dll")]
private static extern long GetVolumeInformation(
string PathName,
StringBuilder VolumeNameBuffer,
UInt32 VolumeNameSize,
ref UInt32 VolumeSerialNumber,
ref UInt32 MaximumComponentLength,
ref UInt32 FileSystemFlags,
StringBuilder FileSystemNameBuffer,
UInt32 FileSystemNameSize);
を知るための方法を提供していません。私は多かれ少なかれこのコードでそれを見つけることができたことを知っています:
ManagementObjectSearch theSearcher = new ManagementObjectSearcher(
"SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
私はそれを避けることを好むでしょう。
WMIについて、それを避けたいのはどうですか? –
それの背後には大きな理由はありません。可能であれば、私はそれをスキップすることができるようにしたいと思います。常に私のために学ぶために新しい何か。 「道」がない場合は、WMIを使用します。 – MadBoy
CodeProjectのC++には[このサンプル](http://www.codeproject.com/Articles/6559/How-To-get-the-usbdisk-s-drive-letter-properly)があります。 C#で翻訳するのはあまり簡単ではありません。 – Steve