Fonction SetProcessWorkingSetSize (memoryapi.h)

Définit les tailles minimales et maximales d’ensemble de travail pour le processus spécifié.

Syntaxe

BOOL SetProcessWorkingSetSize(
  [in] HANDLE hProcess,
  [in] SIZE_T dwMinimumWorkingSetSize,
  [in] SIZE_T dwMaximumWorkingSetSize
);

Paramètres

[in] hProcess

Handle du processus dont les tailles de jeu de travail doivent être définies.

Le handle doit avoir le droit d’accès PROCESS_SET_QUOTA . Pour plus d’informations, consultez Traiter les droits de sécurité et d’accès.

[in] dwMinimumWorkingSetSize

Taille minimale du jeu de travail pour le processus, en octets. Le gestionnaire de mémoire virtuelle tente de conserver au moins cette quantité de mémoire résidant dans le processus chaque fois que le processus est actif.

Ce paramètre doit être supérieur à zéro, mais inférieur ou égal à la taille maximale du jeu de travail. La taille par défaut est de 50 pages (par exemple, il s’agit de 204 800 octets sur les systèmes avec une taille de page de 4 Ko). Si la valeur est supérieure à zéro mais inférieure à 20 pages, la valeur minimale est définie sur 20 pages.

Si dwMinimumWorkingSetSize et dwMaximumWorkingSetSize ont la valeur (SIZE_T)–1, la fonction supprime autant de pages que possible de l’ensemble de travail du processus spécifié.

[in] dwMaximumWorkingSetSize

Taille maximale du jeu de travail pour le processus, en octets. Le gestionnaire de mémoire virtuelle tente de ne conserver que cette quantité de mémoire résidant dans le processus chaque fois que le processus est actif et que la mémoire disponible est faible.

Ce paramètre doit être supérieur ou égal à 13 pages (par exemple, 53 248 sur les systèmes avec une taille de page de 4 Ko) et inférieur au maximum à l’échelle du système (nombre de pages disponibles moins 512 pages). La taille par défaut est de 345 pages (par exemple, il s’agit de 1 413 120 octets sur les systèmes avec une taille de page de 4 Ko).

Si dwMinimumWorkingSetSize et dwMaximumWorkingSetSize ont la valeur (SIZE_T)–1, la fonction supprime autant de pages que possible de l’ensemble de travail du processus spécifié.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Appelez GetLastError pour obtenir des informations d’erreur étendues.

Notes

L’ensemble de travail d’un processus est l’ensemble de pages mémoire dans l’espace d’adressage virtuel du processus qui résident actuellement dans la mémoire physique. Ces pages peuvent être utilisées par une application sans déclencher d’erreur de page. Pour plus d’informations sur les erreurs de page, consultez Ensemble de travail. Les tailles de plage de travail minimale et maximale affectent le comportement de pagination de la mémoire virtuelle d’un processus.

L’ensemble de travail du processus spécifié peut être vidé en spécifiant la valeur (SIZE_T)-1 pour les tailles minimale et maximale de l’ensemble de travail. Cela supprime autant de pages que possible de l’ensemble de travail. La fonction EmptyWorkingSet peut également être utilisée à cet effet.

Si les valeurs de dwMinimumWorkingSetSize ou dwMaximumWorkingSetSize sont supérieures aux tailles d’ensemble de travail actuelles du processus, le processus spécifié doit disposer du privilège SE_INC_WORKING_SET_NAME . Tous les utilisateurs disposent généralement de ce privilège. Pour plus d’informations sur les privilèges de sécurité, consultez Privilèges.

Windows Server 2003 et Windows XP : Le processus spécifié doit avoir le privilège SE_INC_BASE_PRIORITY_NAME . Les utilisateurs des groupes Administrateurs et Utilisateurs avec pouvoir disposent généralement de ce privilège.

Le système d’exploitation alloue des tailles de jeu de travail sur la base du premier arrivé, premier servi. Par exemple, si une application définit correctement 40 mégaoctets comme taille minimale d’ensemble de travail sur un système de 64 mégaoctets, et qu’une deuxième application demande une taille de jeu de travail de 40 mégaoctets, le système d’exploitation refuse la demande de la deuxième application.

L’utilisation de la fonction SetProcessWorkingSetSize pour définir les tailles minimales et maximales des ensembles de travail d’une application ne garantit pas que la mémoire demandée sera réservée ou qu’elle restera résidente à tout moment. Lorsque l’application est inactive ou qu’une situation de mémoire insuffisante entraîne une demande de mémoire, le système d’exploitation peut réduire l’ensemble de travail de l’application. Une application peut utiliser la fonction VirtualLockpour verrouiller les plages de l’espace d’adressage virtuel de l’application en mémoire ; toutefois, cela peut potentiellement dégrader les performances du système.

Lorsque vous augmentez la taille de l’ensemble de travail d’une application, vous retirez la mémoire physique du reste du système. Cela peut dégrader les performances d’autres applications et du système dans son ensemble. Cela peut également entraîner des échecs d’opérations qui nécessitent la présence de mémoire physique (par exemple, la création de processus, de threads et d’un pool de noyaux). Par conséquent, vous devez utiliser soigneusement la fonction SetProcessWorkingSetSize . Vous devez toujours tenir compte des performances de l’ensemble du système lorsque vous concevez une application.

Spécifications

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête memoryapi.h
Bibliothèque onecore.lib
DLL Kernel32.dll

Voir aussi

GetProcessWorkingSetSize

Ensemble de travail de processus

Fonctions de processus et de thread

Processus

SetProcessWorkingSetSizeEx

VirtualLock