Einzelnen Beitrag anzeigen

Benutzerbild von sundance
sundance

Registriert seit: 9. Mai 2006
98 Beiträge
 
Delphi 7 Professional
 
#1

Größe des installierten Arbeitsspeichers ermitteln

  Alt 25. Apr 2012, 10:02
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.
  Mit Zitat antworten Zitat