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 |