Определить геометрию диска в Windows - PullRequest
5 голосов
/ 09 сентября 2008

Мне нужно программно определить, сколько секторов, головок и цилиндров находится на физическом диске из Windows XP. Кто-нибудь знает API для определения этого? Где Windows может раскрыть эту информацию?

Ответы [ 3 ]

6 голосов
/ 09 сентября 2008

Используйте DeviceIoControl с управляющим кодом IOCTL_DISK_GET_DRIVE_GEOMETRY или IOCTL_DISK_GET_DRIVE_GEOMETRY_EX .

В MSDN есть пример кода для этого здесь .

1 голос
/ 12 ноября 2009

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( );
        }
    }
}

Для получения списка дополнительных свойств диска, которые вы можете использовать, проверьте эту страницу

1 голос
/ 09 сентября 2008

Существует контрольный код, который вы можете передать DeviceIoControl для получения геометрии физического диска.

...