Pergunta

Preciso determinar programaticamente quantos setores, cabeçotes e cilindros estão em um disco físico do Windows XP.Alguém conhece a API para determinar isso?Onde o Windows pode expor essas informações?

Foi útil?

Solução

Usar DeviceIoControl com código de controle IOCTL_DISK_GET_DRIVE_GEOMETRY ou IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.

Há um código de exemplo no MSDN para fazer isso aqui.

Outras dicas

Há um código de controle para o qual você pode passar DeviceIoControl para obter a geometria do disco físico.

O WMI também é bom nisso, usei-o com grande sucesso.

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

Para obter uma lista de propriedades adicionais da unidade que você pode usar, confira esta página

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top