Partager via


Fonction SetProcessWorkingSetSizeEx (memoryapi.h)

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

Syntaxe

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

Paramètres

[in] hProcess

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

Le handle doit disposer de droits 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é. Pour plus d'informations, consultez Notes.

[in] Flags

Indicateurs qui contrôlent l’application des tailles minimales et maximales des ensembles de travail.

Valeur Signification
QUOTA_LIMITS_HARDWS_MIN_DISABLE
0x00000002
L’ensemble de travail peut se trouver en dessous de la limite minimale de l’ensemble de travail si les besoins en mémoire sont élevés.

Cet indicateur ne peut pas être utilisé avec QUOTA_LIMITS_HARDWS_MIN_ENABLE.

QUOTA_LIMITS_HARDWS_MIN_ENABLE
0x00000001
L’ensemble de travail n’est pas inférieur à la limite minimale de l’ensemble de travail.

Cet indicateur ne peut pas être utilisé avec QUOTA_LIMITS_HARDWS_MIN_DISABLE.

QUOTA_LIMITS_HARDWS_MAX_DISABLE
0x00000008
L’ensemble de travail peut dépasser la limite maximale de l’ensemble de travail si la mémoire est abondante.

Cet indicateur ne peut pas être utilisé avec QUOTA_LIMITS_HARDWS_MAX_ENABLE.

QUOTA_LIMITS_HARDWS_MAX_ENABLE
0x00000004
L’ensemble de travail ne dépassera pas la limite maximale du jeu de travail.

Cet indicateur ne peut pas être utilisé avec QUOTA_LIMITS_HARDWS_MAX_DISABLE.

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. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError. Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

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 : 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.

Par défaut, l’utilisation de la fonction SetProcessWorkingSetSize pour définir les tailles minimales et maximales des groupes 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. Lorsqu’une 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 en dessous de sa limite minimale de jeu de travail. Si la mémoire est abondante, le système peut autoriser une application à dépasser sa limite maximale de travail. Les indicateurs QUOTA_LIMITS_HARDWS_MIN_ENABLE et QUOTA_LIMITS_HARDWS_MAX_ENABLE vous permettent de vous assurer que les limites sont appliquées.

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.

Une application peut utiliser la fonction VirtualLock pour 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête memoryapi.h (inclure Windows.h sur Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothèque onecore.lib
DLL Kernel32.dll

Voir aussi

GetProcessWorkingSetSizeEx

Ensemble de travail de processus

Fonctions de processus et de thread

Processus

VirtualLock

Jeu de travail