我正在嘗試獲取連接的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的數據來獲得完整的大小。 那麼有沒有另一種方法來獲得適當的尺寸?
有趣。我在哪裏可以找到那些枚舉作爲整數,所以我可以把正確的價值? – Eaton 2010-10-24 14:36:24
常量在WinIoCtl.h中定義。 IOCTL_DISK_GET_LENGTH_INFO的值是0x0007405c – 2010-10-24 14:49:59
謝謝,我會盡快嘗試並讓您知道我的結果。 – Eaton 2010-10-25 23:05:31