SetProcessWorkingSetSizeEx-Funktion (memoryapi.h)

Legt die minimale und maximale Arbeitssatzgröße für den angegebenen Prozess fest.

Syntax

BOOL SetProcessWorkingSetSizeEx(
  [in] HANDLE hProcess,
  [in] SIZE_T dwMinimumWorkingSetSize,
  [in] SIZE_T dwMaximumWorkingSetSize,
  [in] DWORD  Flags
);

Parameter

[in] hProcess

Ein Handle für den Prozess, dessen Arbeitssatzgrößen festgelegt werden sollen.

Das Handle muss über PROCESS_SET_QUOTA Zugriffsrechte verfügen. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte.

[in] dwMinimumWorkingSetSize

Die minimale Arbeitssatzgröße für den Prozess in Byte. Der Virtuelle Speicher-Manager versucht, mindestens so viel Arbeitsspeicher im Prozess zu behalten, wenn der Prozess aktiv ist.

Dieser Parameter muss größer als 0(0) sein, aber kleiner oder gleich der maximalen Arbeitssatzgröße. Die Standardgröße beträgt 50 Seiten (z. B. 204.800 Bytes auf Systemen mit einer Seitengröße von 4K). Wenn der Wert größer als null, aber kleiner als 20 Seiten ist, wird der Mindestwert auf 20 Seiten festgelegt.

Wenn sowohl dwMinimumWorkingSetSize als auch dwMaximumWorkingSetSize den Wert (SIZE_T)–1 haben, entfernt die Funktion so viele Seiten wie möglich aus dem Arbeitssatz des angegebenen Prozesses.

[in] dwMaximumWorkingSetSize

Die maximale Arbeitssatzgröße für den Prozess in Byte. Der Virtuelle Speicher-Manager versucht, nicht mehr als so viel Arbeitsspeicher im Prozess zu behalten, wenn der Prozess aktiv ist und der verfügbare Arbeitsspeicher gering ist.

Dieser Parameter muss größer oder gleich 13 Seiten (z. B. 53.248 auf Systemen mit einer Seitengröße von 4K) und kleiner als das systemweite Maximum (Anzahl verfügbarer Seiten minus 512 Seiten) sein. Die Standardgröße beträgt 345 Seiten (z. B. 1.413.120 Byte auf Systemen mit einer Seitengröße von 4K).

Wenn sowohl dwMinimumWorkingSetSize als auch dwMaximumWorkingSetSize den Wert (SIZE_T)–1 haben, entfernt die Funktion so viele Seiten wie möglich aus dem Arbeitssatz des angegebenen Prozesses. Einzelheiten finden Sie unter "Hinweise".

[in] Flags

Die Flags, die die Erzwingung der minimalen und maximalen Arbeitssatzgrößen steuern.

Wert Bedeutung
QUOTA_LIMITS_HARDWS_MIN_DISABLE
0x00000002
Der Arbeitssatz kann unter die Mindestgrenze des Arbeitssatzes fallen, wenn der Arbeitsspeicherbedarf hoch ist.

Dieses Flag kann nicht mit QUOTA_LIMITS_HARDWS_MIN_ENABLE verwendet werden.

QUOTA_LIMITS_HARDWS_MIN_ENABLE
0x00000001
Der Arbeitssatz fällt nicht unter den Mindestarbeitssatzgrenzwert.

Dieses Flag kann nicht mit QUOTA_LIMITS_HARDWS_MIN_DISABLE verwendet werden.

QUOTA_LIMITS_HARDWS_MAX_DISABLE
0x00000008
Der Arbeitssatz kann den maximalen Arbeitssatzgrenzwert überschreiten, wenn genügend Arbeitsspeicher vorhanden ist.

Dieses Flag kann nicht mit QUOTA_LIMITS_HARDWS_MAX_ENABLE verwendet werden.

QUOTA_LIMITS_HARDWS_MAX_ENABLE
0x00000004
Der Arbeitssatz überschreitet den maximalen Arbeitssatzgrenzwert nicht.

Dieses Flag kann nicht mit QUOTA_LIMITS_HARDWS_MAX_DISABLE verwendet werden.

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. Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Der Arbeitssatz eines Prozesses ist der Satz von Speicherseiten im virtuellen Adressraum des Prozesses, die sich derzeit im physischen Arbeitsspeicher befinden. Diese Seiten stehen für eine Anwendung zur Verfügung, ohne einen Seitenfehler auszulösen. Weitere Informationen zu Seitenfehlern finden Sie unter Arbeitssatz. Die minimale Größe und die maximale Größe von Arbeitssätzen wirken sich auf das Verhalten beim Auslagern des virtuellen Arbeitsspeichers für einen Prozess aus.

Der Arbeitssatz des angegebenen Prozesses kann geleert werden, indem der Wert (SIZE_T)–1 für die minimale und maximale Arbeitssatzgröße angegeben wird. Dadurch werden so viele Seiten wie möglich aus dem Arbeitssatz entfernt. Zu diesem Zweck kann auch die Funktion EmptyWorkingSet verwendet werden.

Wenn die Werte von dwMinimumWorkingSetSize oder dwMaximumWorkingSetSize größer als die aktuellen Arbeitssatzgrößen des Prozesses sind, muss der angegebene Prozess über die berechtigung SE_INC_WORKING_SET_NAME verfügen. Im Allgemeinen verfügen alle Benutzer über diese Berechtigung. Weitere Informationen zu Sicherheitsberechtigungen finden Sie unter Berechtigungen.

Windows Server 2003: Der angegebene Prozess muss über die berechtigung SE_INC_BASE_PRIORITY_NAME verfügen. Benutzer in den Gruppen Administratoren und Power Users verfügen in der Regel über diese Berechtigung.

Das Betriebssystem ordnet Arbeitssatzgrößen auf der Grundlage von "First Come, First Served" zu. Wenn eine Anwendung beispielsweise erfolgreich 40 Megabyte als Mindestgröße für den Arbeitssatz auf einem 64-Megabyte-System festlegt und eine zweite Anwendung eine Arbeitssatzgröße von 40 Megabyte anfordert, lehnt das Betriebssystem die Anforderung der zweiten Anwendung ab.

Standardmäßig garantiert die Verwendung der SetProcessWorkingSetSize-Funktion zum Festlegen der minimalen und maximalen Arbeitssatzgrößen einer Anwendung nicht, dass der angeforderte Arbeitsspeicher reserviert wird oder dass er jederzeit resident bleibt. Wenn sich eine Anwendung im Leerlauf befindet oder eine Situation mit wenig Arbeitsspeicher zu einem Bedarf an Arbeitsspeicher führt, kann das Betriebssystem den Arbeitssatz der Anwendung unter den Mindestgrenzwert des Arbeitssatzes reduzieren. Wenn genügend Arbeitsspeicher vorhanden ist, kann das System zulassen, dass eine Anwendung ihren maximalen Arbeitssatzgrenzwert überschreitet. Mit den Flags QUOTA_LIMITS_HARDWS_MIN_ENABLE und QUOTA_LIMITS_HARDWS_MAX_ENABLE können Sie sicherstellen, dass Grenzwerte erzwungen werden.

Wenn Sie die Arbeitssatzgröße einer Anwendung erhöhen, nehmen Sie dem Rest des Systems physischen Arbeitsspeicher weg. Dies kann die Leistung anderer Anwendungen und des Systems als Ganzes beeinträchtigen. Dies kann auch zu Fehlern von Vorgängen führen, bei denen physischer Arbeitsspeicher vorhanden sein muss (z. B. das Erstellen von Prozessen, Threads und Kernelpools). Daher müssen Sie die SetProcessWorkingSetSize-Funktion sorgfältig verwenden. Beim Entwerfen einer Anwendung müssen Sie immer die Leistung des gesamten Systems berücksichtigen.

Eine Anwendung kann die VirtualLock-Funktion verwenden, um Bereiche des virtuellen Adressraums der Anwendung im Arbeitsspeicher zu sperren. dies kann jedoch möglicherweise die Leistung des Systems beeinträchtigen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile memoryapi.h (enthalten Windows.h unter Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothek onecore.lib
DLL Kernel32.dll

Siehe auch

GetProcessWorkingSetSizeEx

Prozess – Arbeitssatz

Prozess- und Threadfunktionen

Prozesse

VirtualLock

Arbeitssatz