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.
Antworten
Zu viele Anzeigen?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.
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.