接続されたドライブが、SATA、IDE、eSATA、または Firewire を介して USB 接続されているかどうかを確認したいと思います。WMI を使わずに見つける方法はありますか? このコードを使用して情報を取得しています。
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives) {
// DriveType.Fixed && DriveType.Removable
}
残念ながら、これは USB 経由で接続されたすべての HDD に対して返され、DriveType.Fixed
USB スティックのみが になりますDriveType.Removable
。
私はこのようなものを探していると思います...実際に何を探しているのかわかりません。残念ながらGetVolumeInformation
、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);
WMI をスキップしたいと思います。私は多かれ少なかれこのコードでそれを見つけることができることを知っています:
ManagementObjectSearch theSearcher = new ManagementObjectSearcher(
"SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
しかし、私はそれを避けたいと思います。