GlobalMemoryStatusEx-Funktion (sysinfoapi.h)

Ruft Informationen zur aktuellen Systemauslastung sowohl des physischen als auch des virtuellen Speichers ab.

Syntax

BOOL GlobalMemoryStatusEx(
  [in, out] LPMEMORYSTATUSEX lpBuffer
);

Parameter

[in, out] lpBuffer

Ein Zeiger auf eine MEMORYSTATUSEX-Struktur , die Informationen zur aktuellen Speicherverfügbarkeit empfängt.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Sie können die GlobalMemoryStatusEx-Funktion verwenden, um zu bestimmen, wie viel Arbeitsspeicher Ihre Anwendung zuordnen kann, ohne dass andere Anwendungen erheblich beeinträchtigt werden.

Die von der GlobalMemoryStatusEx-Funktion zurückgegebenen Informationen sind flüchtig. Es gibt keine Garantie, dass zwei sequenzielle Aufrufe dieser Funktion dieselben Informationen zurückgeben.

Der ullAvailPhys-Member der MEMORYSTATUSEX-Struktur bei lpBuffer enthält Arbeitsspeicher für alle NUMA-Knoten.

Beispiele

Der folgende Code zeigt eine einfache Verwendung der GlobalMemoryStatusEx-Funktion .

//  Sample output:
//  There is       51 percent of memory in use.
//  There are 2029968 total KB of physical memory.
//  There are  987388 free  KB of physical memory.
//  There are 3884620 total KB of paging file.
//  There are 2799776 free  KB of paging file.
//  There are 2097024 total KB of virtual memory.
//  There are 2084876 free  KB of virtual memory.
//  There are       0 free  KB of extended memory.

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

// Use to convert bytes to KB
#define DIV 1024

// Specify the width of the field in which to print the numbers. 
// The asterisk in the format specifier "%*I64d" takes an integer 
// argument and uses it to pad and right justify the number.
#define WIDTH 7

void _tmain()
{
  MEMORYSTATUSEX statex;

  statex.dwLength = sizeof (statex);

  GlobalMemoryStatusEx (&statex);

  _tprintf (TEXT("There is  %*ld percent of memory in use.\n"),
            WIDTH, statex.dwMemoryLoad);
  _tprintf (TEXT("There are %*I64d total KB of physical memory.\n"),
            WIDTH, statex.ullTotalPhys/DIV);
  _tprintf (TEXT("There are %*I64d free  KB of physical memory.\n"),
            WIDTH, statex.ullAvailPhys/DIV);
  _tprintf (TEXT("There are %*I64d total KB of paging file.\n"),
            WIDTH, statex.ullTotalPageFile/DIV);
  _tprintf (TEXT("There are %*I64d free  KB of paging file.\n"),
            WIDTH, statex.ullAvailPageFile/DIV);
  _tprintf (TEXT("There are %*I64d total KB of virtual memory.\n"),
            WIDTH, statex.ullTotalVirtual/DIV);
  _tprintf (TEXT("There are %*I64d free  KB of virtual memory.\n"),
            WIDTH, statex.ullAvailVirtual/DIV);

  // Show the amount of extended memory available.

  _tprintf (TEXT("There are %*I64d free  KB of extended memory.\n"),
            WIDTH, statex.ullAvailExtendedVirtual/DIV);
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile sysinfoapi.h (windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

MEMORYSTATUSEX

Speicherverwaltungsfunktionen

Speicherleistungsinformationen

Virtueller Adressraum und physischer Speicher