Déterminer la géométrie du disque sous Windows
-
09-06-2019 - |
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 ?
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