我正在尝试获取连接的USB闪存驱动器的物理设备大小,我已经尝试使用WMI。
ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Model = '" + cmbHdd.SelectedItem + "'");
foreach (ManagementObject moDisk in mosDisks.Get())
{
lblCapacity.Text = "Capacity: " + moDisk["Size"];
}
我已经尝试使用导入获取几何形状:
var geo = new DiskGeometry();
uint returnedBytes;
DeviceIoControl(Handle, 0x70000, IntPtr.Zero, 0, ref geo, (uint)Marshal.SizeOf(typeof(DiskGeometry)), out returnedBytes, IntPtr.Zero);
return geo.DiskSize;
它们全都会返回一个值..但这个值是不正确的。
比如,上面的代码返回 250056737280。 当我将整个二进制内容倒出到一个新文件时,FileStream.Length 返回 250059350015。
看看最后一个选项比前面大?那也是我所需要得到的正确尺寸。但我不能仅仅只为了得到完整的尺寸就倒出250GB的数据。 因此,是否有其他方法可以获得正确的尺寸?