Ich versuche, die Gesamtgröße eines physischen Laufwerks (nicht zugewiesene + primäre Partitionen + erweiterte Partitionen Größe) zu erhalten.Get Gesamtgröße einer Festplatte in C++ Windows
Ich habe Plattennamen als \\.\PhysicalDriveX
ich mit GetDiskFreeSpaceEx
versucht, aber es nicht korrektem Ergebnis nicht geben, wenn die Partition eine erweiterte Partition ist, in diesem Fall ist es die Gesamtgröße der Partition zurück.
BOOL ret = FALSE;
ULARGE_INTEGER ulFreeSpace;
ULARGE_INTEGER ulTotalSpace;
ULARGE_INTEGER ulTotalFreeSpace;
__int64 ulTotalUsedSpace = 0;
GetDiskFreeSpaceEx(szBuffer, &ulFreeSpace, &ulTotalSpace, &ulTotalFreeSpace);
*diskSize = ulTotalSpace.QuadPart;
kann ich die Partition Informationen erhalten DeviceIoControl mit mit IOCTL_DISK_GET_DRIVE_LAYOUT_EX aber ich bin immer verwirrt über erweiterte Partition Größe.
Gibt es eine Möglichkeit, dass ich die Gesamtgröße einer Festplatte in C++ auf Windows genau erhalten kann ??
Dank Rudi, jetzt funktioniert es für mich, ich habe eine Frage, wie kann ich wissen, welches Laufwerk ein logisches Laufwerk ist. Ich meine, sollte ich das EBR lesen oder es kann von DeviceIoControl getan werden ??? – singh
'DeviceIoControl' arbeitet mit Festplatten direkt anstatt Partitionen, wenn Sie Partitionsinformationen wollen, ist das ein Kandidat für eine andere SO-Frage :) –
IOCTL_DISK_GET_DRIVE_GEOMETRY ist ungenaue Möglichkeit, die Gesamtgröße in Bytes zu erhalten (einige K kleiner als die tatsächliche Festplattengröße). Ich empfehle stattdessen, IOCTL_DISK_GET_LENGTH_INFO zu verwenden. – Calmarius