SetProcessWorkingSetSize-Funktion (memoryapi.h)
Legt die minimale und maximale Arbeitssatzgröße für den angegebenen Prozess fest.
Syntax
BOOL SetProcessWorkingSetSize(
[in] HANDLE hProcess,
[in] SIZE_T dwMinimumWorkingSetSize,
[in] SIZE_T dwMaximumWorkingSetSize
);
Parameter
[in] hProcess
Ein Handle für den Prozess, dessen Arbeitssatzgrößen festgelegt werden sollen.
Das Handle muss über das Zugriffsrecht PROCESS_SET_QUOTA 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.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.
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 und Windows XP: 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.
Die Verwendung der SetProcessWorkingSetSize-Funktion zum Festlegen der minimalen und maximalen Arbeitssatzgrößen einer Anwendung garantiert nicht, dass der angeforderte Arbeitsspeicher reserviert wird oder dass er jederzeit resident bleibt. Wenn sich die Anwendung im Leerlauf befindet oder eine Situation mit wenig Arbeitsspeicher einen Bedarf an Arbeitsspeicher verursacht, kann das Betriebssystem den Arbeitssatz der Anwendung reduzieren. Eine Anwendung kann die VirtualLock-Funktionverwenden, um Bereiche des virtuellen Adressraums der Anwendung im Arbeitsspeicher zu sperren. dies kann jedoch möglicherweise die Leistung des Systems beeinträchtigen.
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.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | memoryapi.h |
Bibliothek | onecore.lib |
DLL | Kernel32.dll |