Determine a geometria do disco no Windows
-
09-06-2019 - |
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?
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