Pregunta

Necesito determinar mediante programación cuántos sectores, cabezales y cilindros hay en un disco físico de Windows XP.¿Alguien conoce la API para determinar esto?¿Dónde podría Windows exponer esta información?

¿Fue útil?

Solución

Usar DispositivoIoControl con código de control IOCTL_DISK_GET_DRIVE_GEOMETRY o IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.

Hay un código de muestra en MSDN para hacer esto. aquí.

Otros consejos

Hay un código de control al que puedes pasar DispositivoIoControl para obtener la geometría del disco físico.

WMI también es bueno en esto, lo he usado con gran éxito.

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 obtener una lista de propiedades de unidades adicionales que puede utilizar, consulte esta página

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top