Domanda

Devo determinare a livello di codice quanti settori, testine e cilindri si trovano su un disco fisico da Windows XP.Qualcuno conosce l'API per determinarlo?Dove potrebbe Windows esporre queste informazioni?

È stato utile?

Soluzione

Utilizzo DispositivoIoControl con codice di controllo IOCTL_DISK_GET_DRIVE_GEOMETRIA O IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.

C'è un codice di esempio in MSDN per farlo Qui.

Altri suggerimenti

C'è un codice di controllo a cui puoi passare DispositivoIoControl per ottenere la geometria del disco fisico.

WMI è bravo anche in questo, l'ho usato con grande successo.

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

Per un elenco delle proprietà aggiuntive dell'unità che puoi utilizzare, consulta questa pagina

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top