Función SetProcessWorkingSetSizeEx (memoryapi.h)

Establece los tamaños mínimo y máximo del conjunto de trabajo para el proceso especificado.

Sintaxis

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

Parámetros

[in] hProcess

Identificador del proceso cuyo tamaño del conjunto de trabajo se va a establecer.

El identificador debe tener PROCESS_SET_QUOTA derechos de acceso. Para obtener más información, consulte Derechos de acceso y seguridad de procesos.

[in] dwMinimumWorkingSetSize

Tamaño mínimo del conjunto de trabajo para el proceso, en bytes. El administrador de memoria virtual intenta mantener al menos esta cantidad de memoria residente en el proceso siempre que el proceso esté activo.

Este parámetro debe ser mayor que cero, pero menor o igual que el tamaño máximo del conjunto de trabajo. El tamaño predeterminado es de 50 páginas (por ejemplo, es de 204 800 bytes en sistemas con un tamaño de página de 4 000). Si el valor es mayor que cero pero menor que 20 páginas, el valor mínimo se establece en 20 páginas.

Si dwMinimumWorkingSetSize y dwMaximumWorkingSetSize tienen el valor (SIZE_T)–1, la función quita tantas páginas como sea posible del conjunto de trabajo del proceso especificado.

[in] dwMaximumWorkingSetSize

Tamaño máximo del conjunto de trabajo para el proceso, en bytes. El administrador de memoria virtual intenta mantener no más de esta cantidad de memoria residente en el proceso siempre que el proceso esté activo y la memoria disponible sea baja.

Este parámetro debe ser mayor o igual que 13 páginas (por ejemplo, 53 248 en sistemas con un tamaño de página 4K) y menor que el máximo de todo el sistema (número de páginas disponibles menos 512 páginas). El tamaño predeterminado es de 345 páginas (por ejemplo, es de 1413 120 bytes en sistemas con un tamaño de página de 4 K).

Si dwMinimumWorkingSetSize y dwMaximumWorkingSetSize tienen el valor (SIZE_T)–1, la función quita tantas páginas como sea posible del conjunto de trabajo del proceso especificado. Para conocer más detalles, vea la sección Comentarios.

[in] Flags

Marcas que controlan la aplicación de los tamaños mínimo y máximo del conjunto de trabajo.

Valor Significado
QUOTA_LIMITS_HARDWS_MIN_DISABLE
0x00000002
El espacio de trabajo puede estar por debajo del límite mínimo del conjunto de trabajo si las demandas de memoria son altas.

Esta marca no se puede usar con QUOTA_LIMITS_HARDWS_MIN_ENABLE.

QUOTA_LIMITS_HARDWS_MIN_ENABLE
0x00000001
El espacio de trabajo no se encuentra por debajo del límite mínimo del conjunto de trabajo.

Esta marca no se puede usar con QUOTA_LIMITS_HARDWS_MIN_DISABLE.

QUOTA_LIMITS_HARDWS_MAX_DISABLE
0x00000008
El espacio de trabajo puede superar el límite máximo del conjunto de trabajo si hay mucha memoria.

Esta marca no se puede usar con QUOTA_LIMITS_HARDWS_MAX_ENABLE.

QUOTA_LIMITS_HARDWS_MAX_ENABLE
0x00000004
El conjunto de trabajo no superará el límite máximo del conjunto de trabajo.

Esta marca no se puede usar con QUOTA_LIMITS_HARDWS_MAX_DISABLE.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

El conjunto de trabajo de un proceso es el conjunto de páginas de memoria en el espacio de direcciones virtuales del proceso que residen actualmente en memoria física. Estas páginas están disponibles para que una aplicación se use sin desencadenar un error de página. Para obtener más información sobre los errores de página, vea Working Set. Los tamaños mínimos y máximos del conjunto de trabajo afectan al comportamiento de paginación de memoria virtual de un proceso.

El conjunto de trabajo del proceso especificado se puede vaciar especificando el valor (SIZE_T)–1 para los tamaños mínimo y máximo del conjunto de trabajo. Esto quita tantas páginas como sea posible del espacio de trabajo. La función EmptyWorkingSet también se puede usar para este propósito.

Si los valores de dwMinimumWorkingSetSize o dwMaximumWorkingSetSize son mayores que los tamaños del conjunto de trabajo actual del proceso, el proceso especificado debe tener el privilegio SE_INC_WORKING_SET_NAME . Por lo general, todos los usuarios tienen este privilegio. Para obtener más información sobre los privilegios de seguridad, consulte Privilegios.

Windows Server 2003: El proceso especificado debe tener el privilegio SE_INC_BASE_PRIORITY_NAME . Los usuarios de los grupos Administradores y Usuarios avanzados suelen tener este privilegio.

El sistema operativo asigna tamaños de espacio de trabajo por primera vez, servidos por primera vez. Por ejemplo, si una aplicación establece correctamente 40 megabytes como su tamaño mínimo de espacio de trabajo en un sistema de 64 megabytes y una segunda aplicación solicita un tamaño de espacio de trabajo de 40 megabytes, el sistema operativo deniega la solicitud de la segunda aplicación.

De forma predeterminada, el uso de la función SetProcessWorkingSetSize para establecer los tamaños mínimo y máximo del conjunto de trabajo de una aplicación no garantiza que se reserve la memoria solicitada o que permanecerá residente en todo momento. Cuando una aplicación está inactiva o una situación de poca memoria provoca una demanda de memoria, el sistema operativo puede reducir el espacio de trabajo de la aplicación por debajo de su límite mínimo de espacio de trabajo. Si la memoria es abundante, el sistema podría permitir que una aplicación supere su límite máximo de espacio de trabajo. Las marcas QUOTA_LIMITS_HARDWS_MIN_ENABLE y QUOTA_LIMITS_HARDWS_MAX_ENABLE permiten asegurarse de que se aplican los límites.

Al aumentar el tamaño del espacio de trabajo de una aplicación, se quita la memoria física del resto del sistema. Esto puede degradar el rendimiento de otras aplicaciones y el sistema en su conjunto. También puede provocar errores en las operaciones que requieren que haya memoria física (por ejemplo, crear procesos, subprocesos y grupo de kernels). Por lo tanto, debe usar la función SetProcessWorkingSetSize cuidadosamente. Siempre debe tener en cuenta el rendimiento de todo el sistema al diseñar una aplicación.

Una aplicación puede usar la función VirtualLock para bloquear intervalos del espacio de direcciones virtuales de la aplicación en memoria; sin embargo, esto puede degradar potencialmente el rendimiento del sistema.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado memoryapi.h (incluye Windows.h en Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library onecore.lib
Archivo DLL Kernel32.dll

Vea también

GetProcessWorkingSetSizeEx

Conjunto de trabajo de procesos

Funciones de proceso y subproceso

Procesos

VirtualLock

Espacio de trabajo