2 Stimmen

Wie erkennt man, ob es sich um eine einfache oder dynamische Festplatte handelt?

Ist es unter Windows möglich, von einem C/C++-Programm aus zu wissen, mit welcher Art von Festplatte wir es zu tun haben? Vergessen Sie gpt oder mbr, wie kann man wissen, ob es sich um eine einfache oder dynamische Festplatte handelt? Die Programmeingabe kann der Laufwerksbuchstabe oder eine beliebige Information über die Festplatte sein, die Ausgabe sollte dynamisch oder einfach sein. Ich brauche keinen direkten Weg, auch wenn es ein langwieriger Prozess ist, ist es okay. Ich konnte nicht viel in msdn finden. Bitte helfen Sie mir weiter.

6voto

Alan Punkte 44139

Es gibt einen Weg in Windows, aber er ist nicht einfach.

Es gibt keine direkte API, um festzustellen, ob es sich bei einem Datenträger um einen einfachen oder einen dynamischen Datenträger handelt, aber alle dynamischen Datenträger haben LDM-Informationen.

Wenn also ein Laufwerk einen Teil mit LDM-Informationen enthält, handelt es sich um eine dynamische Festplatte.

kann die Methode DeviceIoControl() mit dem Steuercode IOCTL_DISK_GET_DRIVE_LAYOUT_EX verwendet werden, um diese Informationen zu erhalten.

Hier ist ein Beitrag mit einer Beispiel-Konsolenanwendung, die das tut, wonach Sie fragen.

0voto

Nitin Midha Punkte 2258

Wie von MSDN http://msdn.microsoft.com/en-us/library/aa363785(VS.85).aspx

Erkennen des Datenträgertyps

Es gibt keine spezielle Funktion, um programmatisch den Typ des Datenträgers zu ermitteln, auf dem sich eine bestimmte Datei oder ein bestimmtes Verzeichnis befindet. Es gibt eine indirekte Methode.

Rufen Sie zunächst GetVolumePathName auf. Dann rufen Sie CreateFile auf, um den Datenträger unter Verwendung des Pfades zu öffnen. Als nächstes verwenden Sie IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS mit dem Volume-Handle, um die Festplattennummer zu erhalten, und verwenden die Festplattennummer, um den Festplattenpfad zu konstruieren, z. B. "\? \PhysicalDriveX ". Schließlich verwenden Sie IOCTL_DISK_GET_DRIVE_LAYOUT_EX, um die Partitionsliste zu erhalten, und überprüfen den PartitionType für jeden Eintrag in der Partitionsliste.

-2voto

Ashish Punkte 7999

Check out für GetDriveType() .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X