Gibt es eine verlässliche Möglichkeit, die Größe des
installierten Arbeitsspeichers programmatisch (auf 32- und 64-Bit-Systemen) festzustellen?
Anders als der Name vermuten lässt liefert die
API-Funktion GlobalMemoryStatusEx() im Strukturelement "ullTotalPhys: Int64" auf einem 32-Bit Windows 7 mit installierten 4 GB "nur" die maximal nutzbaren 3.5 GB:
Code:
typedef struct _MEMORYSTATUSEX {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORDLONG ullTotalPhys;
DWORDLONG ullAvailPhys;
DWORDLONG ullTotalPageFile;
DWORDLONG ullAvailPageFile;
DWORDLONG ullTotalVirtual;
DWORDLONG ullAvailVirtual;
DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
Per
WMI könnte man von der Kommandozeile aus die installierten Speicherbänke abfragen:
Code:
WMIC memorychip
Capacity CreationClassName DataWidth Description DeviceLocator
2147483648 Win32_PhysicalMemory 64 Physikalischer Speicher XMM1
2147483648 Win32_PhysicalMemory 64 Physikalischer Speicher XMM3
4194304 Win32_PhysicalMemory 2 Physikalischer Speicher SYSTEM ROM
Ich habe zwar den
WMI-Class Code Generator schon mal (für einfache Abfragen) ausprobiert, aber bei obiger Abfrage komme ich nicht klar...
Gibt es eine
API-Funktion, die den physikalisch installierten Arbeitsspeicher ermitteln kann oder vielleicht hat jemand einen Tipp, wie ich das mit dem
WMI-Codegenerator bewerkstelligen kann?
.sundance.