Moin Corpsman,
hast Du das hier berücksichtigt?
Zitat von
PSDK - GlobalMemoryStatus - Remarks:
On Intel x86 computers with more than 2 GB and less than 4 GB of memory, the GlobalMemoryStatus function will always return 2 GB in the dwTotalPhys member of the MEMORYSTATUS structure. Similarly, if the total available memory is between 2 and 4 GB, the dwAvailPhys member of the MEMORYSTATUS structure will be rounded down to 2 GB. If the executable is linked using the /LARGEADDRESSAWARE linker option, then the GlobalMemoryStatus function will return the correct amount of physical memory in both members.
Vielleicht solltest Du es mal mit GlobalMemoryStatusEx probieren (ggf. selber importieren, bzw. die Datenstruktur deklarieren).
Length muss übrigens nicht initialisisert werden.