Frage

Ich muss programmgesteuert ermitteln, wie viele Sektoren, Köpfe und Zylinder sich auf einer physischen Festplatte von Windows XP befinden.Kennt jemand die API, um dies zu ermitteln?Wo könnte Windows diese Informationen offenlegen?

War es hilfreich?

Lösung

Verwenden DeviceIoControl mit Steuercode IOCTL_DISK_GET_DRIVE_GEOMETRY oder IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.

Hierzu gibt es Beispielcode in MSDN Hier.

Andere Tipps

Es gibt einen Kontrollcode, an den Sie übergeben können DeviceIoControl um die Geometrie der physischen Festplatte zu erhalten.

WMI ist auch darin gut, ich habe es mit großem Erfolg verwendet.

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

Eine Liste zusätzlicher Laufwerkseigenschaften, die Sie verwenden können, finden Sie hier diese Seite

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top