Я пытаюсь определить размер физического устройства подключенного 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
Видите, как больше последний параметр?Это также правильный размер, который мне нужно получить, чтобы мой код работал должным образом.Но я не могу сбросить 250 ГБ данных, чтобы получить полный размер.Так есть ли другой способ получить правильный размер?