Ok, das bestätigt dann auf jeden Fall meine Vermutung, dass im Buffer auch noch die dazugehörigen Strings abgelegt werden und nicht nur die
DRIVER_INFO_2
Strukturen. Mit dem
GetMem
Beispiel sollte es aber funktionieren. Zur Erklärung:
Buf
ist hier als Zeiger deklariert, welcher nach dem Aufruf der
API dann auf die erste
DRIVER_INFO_2
Struktur zeigt. Mit dem
Inc
wird der Zeiger um
SizeOf(TDriverInfo2)
erhöht, zeigt also danach auf das 2./3./n-te Element.
Hier fällt mir grade auf, dass in meinem Beisüiel das
FreeMem
am Ende so natürlich nicht funktioniert, da sich der Zeiger ja geändert hat. Den initialen Buffer-Pointer (direkt nach dem
GetMem
Aufruf) müsstest du dir also sichern, bevor du anfängst zu iterieren.