Question

Je dois déterminer par programme combien de secteurs, de têtes et de cylindres se trouvent sur un disque physique à partir de Windows XP.Quelqu'un connaît-il l'API permettant de déterminer cela ?Où Windows peut-il exposer ces informations ?

Était-ce utile?

La solution

Utiliser DeviceIoControl avec code de contrôle IOCTL_DISK_GET_DRIVE_GEOMETRY ou IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.

Il y a un exemple de code dans MSDN pour ce faire ici.

Autres conseils

Il y a un code de contrôle que vous pouvez transmettre DeviceIoControl pour obtenir la géométrie du disque physique.

WMI est également bon dans ce domaine, je l'ai utilisé avec beaucoup de succès.

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

Pour une liste des propriétés de lecteur supplémentaires que vous pouvez utiliser, consultez cette page

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top