Определение геометрии диска в Windows
-
09-06-2019 - |
Вопрос
Мне нужно программно определить, сколько секторов, головок и цилиндров находится на физическом диске из Windows XP.Кто-нибудь знает API для определения этого?Где Windows может предоставить эту информацию?
Решение
Использование Управление устройством с управляющим кодом IOCTL_DISK_GET_DRIVE_GEOMETRY или IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.
В MSDN есть пример кода для этого здесь.
Другие советы
Есть управляющий код, который вы можете передать Управление устройством чтобы получить физическую геометрию диска.
WMI тоже хорош в этом, я использовал его с большим успехом.
using( ManagementClass driveClass = new ManagementClass( "Win32_DiskDrive" ) )
{
using( ManagementObjectCollection physicalDrives = driveClass.GetInstances( ) )
{
foreach( ManagementObject drive in physicalDrives )
{
string cylinders = ( string )drive["TotalCylinders"];
// ... etc ...
drive.Dispose( );
}
}
}
Список дополнительных свойств диска, которые вы можете использовать, см. эта страница
Не связан с StackOverflow