Compartir a través de


Función GetProcessAffinityMask (winbase.h)

Recupera la máscara de afinidad de proceso para el proceso especificado y la máscara de afinidad del sistema para el sistema.

Sintaxis

BOOL GetProcessAffinityMask(
  [in]  HANDLE     hProcess,
  [out] PDWORD_PTR lpProcessAffinityMask,
  [out] PDWORD_PTR lpSystemAffinityMask
);

Parámetros

[in] hProcess

Identificador del proceso cuya máscara de afinidad se desea.

Este identificador debe tener el derecho de acceso PROCESS_QUERY_INFORMATION o PROCESS_QUERY_LIMITED_INFORMATION . Para obtener más información, consulte Derechos de acceso y seguridad de procesos.

Windows Server 2003 y Windows XP: El identificador debe tener el derecho de acceso PROCESS_QUERY_INFORMATION .

[out] lpProcessAffinityMask

Puntero a una variable que recibe la máscara de afinidad para el proceso especificado.

[out] lpSystemAffinityMask

Puntero a una variable que recibe la máscara de afinidad del sistema.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero y la función establece las variables a las que apunta lpProcessAffinityMask y lpSystemAffinityMask en las máscaras de afinidad adecuadas.

En un sistema con más de 64 procesadores, si los subprocesos del proceso de llamada se encuentran en un único grupo de procesadores, la función establece las variables a las que apunta lpProcessAffinityMask y lpSystemAffinityMask en la máscara de afinidad de proceso y la máscara de procesador de procesadores lógicos activos para ese grupo. Si el proceso de llamada contiene subprocesos en varios grupos, la función devuelve cero para ambas máscaras de afinidad.

Si se produce un error en la función, el valor devuelto es cero y los valores de las variables a las que apunta lpProcessAffinityMask y lpSystemAffinityMask no están definidos. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Una máscara de afinidad de proceso es un vector de bits en el que cada bit representa los procesadores en los que se permite ejecutar un proceso. Una máscara de afinidad del sistema es un vector de bits en el que cada bit representa los procesadores configurados en un sistema.

Una máscara de afinidad de proceso es un subconjunto de la máscara de afinidad del sistema. Un proceso solo se puede ejecutar en los procesadores configurados en un sistema. Por lo tanto, la máscara de afinidad de proceso no puede especificar un bit para un procesador cuando la máscara de afinidad del sistema especifica un 0 bit para ese procesador.

A partir de Windows 11 y Windows Server 2022, en un sistema con más de 64 procesadores, las afinidades de procesos y subprocesos abarcan todos los procesadores del sistema, en todos los grupos de procesadores, de forma predeterminada. La función GetProcessAffinityMask establece lpProcessAffinityMask y lpSystemAffinityMask en el proceso y las máscaras de procesador del sistema sobre el grupo principal del proceso. Si el proceso había establecido explícitamente la afinidad de uno o varios de sus subprocesos fuera del grupo principal del proceso, la función devuelve cero para ambas máscaras de afinidad. Sin embargo, si hHandle especifica un identificador para el proceso actual, la función siempre usa el grupo principal del subproceso que realiza la llamada (que de forma predeterminada es el mismo que el grupo principal del proceso) para establecer lpProcessAffinityMask y lpSystemAffinityMask.

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Varios procesadores

Funciones de proceso y subproceso

Procesos

Grupos de procesadores

SetProcessAffinityMask

SetThreadAffinityMask