Вопрос

Мне нужно программно определить, сколько секторов, головок и цилиндров находится на физическом диске из 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( );
        }
    }
}

Список дополнительных свойств диска, которые вы можете использовать, см. эта страница

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top