Ich glaube
hier ist dein Problem mit den Puffern:
Zitat:
If the output buffer is too small to hold all of the data but can hold some entries, some drivers will return as much data as fits. In this case, the call fails, GetLastError returns ERROR_MORE_DATA, and lpBytesReturned indicates the amount of data received.
Zum Glück kannst du den danach den Aufruf nochmal mit einem größerem dynamisch allozierten Puffer wiederholen, den du dann auf
DRIVE_LAYOUT_INFORMATION_EX
castest.
PartitionInfoEx: array[0..0] of _PARTITION_INFORMATION_EX
ist quasi der Hinweis an den Compiler, das hinter dem Record/Header noch ein Array mit diesem Typ hängt. Um den Speicher dafür musst du dich selbst kümmern.