Função GetProcessAffinityMask (winbase.h)
Recupera a máscara de afinidade de processo para o processo especificado e a máscara de afinidade do sistema para o sistema.
Sintaxe
BOOL GetProcessAffinityMask(
[in] HANDLE hProcess,
[out] PDWORD_PTR lpProcessAffinityMask,
[out] PDWORD_PTR lpSystemAffinityMask
);
Parâmetros
[in] hProcess
Um identificador para o processo cuja máscara de afinidade é desejada.
Esse identificador deve ter o direito de acesso PROCESS_QUERY_INFORMATION ou PROCESS_QUERY_LIMITED_INFORMATION . Para obter mais informações, consulte Direitos de acesso e segurança do processo.
Windows Server 2003 e Windows XP: O identificador deve ter o direito de acesso PROCESS_QUERY_INFORMATION .
[out] lpProcessAffinityMask
Um ponteiro para uma variável que recebe a máscara de afinidade para o processo especificado.
[out] lpSystemAffinityMask
Um ponteiro para uma variável que recebe a máscara de afinidade para o sistema.
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero e a função definirá as variáveis apontadas por lpProcessAffinityMask e lpSystemAffinityMask para as máscaras de afinidade apropriadas.
Em um sistema com mais de 64 processadores, se os threads do processo de chamada estiverem em um único grupo de processadores, a função definirá as variáveis apontadas por lpProcessAffinityMask e lpSystemAffinityMask para a máscara de afinidade de processo e a máscara de processador de processadores lógicos ativos para esse grupo. Se o processo de chamada contiver threads em vários grupos, a função retornará zero para ambas as máscaras de afinidade.
Se a função falhar, o valor retornado será zero e os valores das variáveis apontadas por lpProcessAffinityMask e lpSystemAffinityMask serão indefinidos. Para obter informações de erro estendidas, chame GetLastError.
Comentários
Uma máscara de afinidade de processo é um vetor de bits no qual cada bit representa os processadores nos quais um processo tem permissão para ser executado. Uma máscara de afinidade do sistema é um vetor de bits no qual cada bit representa os processadores configurados em um sistema.
Uma máscara de afinidade de processo é um subconjunto da máscara de afinidade do sistema. Um processo só tem permissão para ser executado nos processadores configurados em um sistema. Portanto, a máscara de afinidade de processo não pode especificar um 1 bit para um processador quando a máscara de afinidade do sistema especifica um 0 bit para esse processador.
A partir do Windows 11 e do Windows Server 2022, em um sistema com mais de 64 processadores, afinidades de processo e thread abrangem todos os processadores no sistema, em todos os grupos de processadores, por padrão. A função GetProcessAffinityMask define lpProcessAffinityMask e lpSystemAffinityMask como o processo e as máscaras de processador do sistema sobre o grupo primário do processo. Se o processo tiver definido explicitamente a afinidade de um ou mais de seus threads fora do grupo primário do processo, a função retornará zero para ambas as máscaras de afinidade. Se, no entanto, hHandle especificar um identificador para o processo atual, a função sempre usará o grupo primário do thread de chamada (que, por padrão, é o mesmo que o grupo primário do processo) para definir lpProcessAffinityMask e lpSystemAffinityMask.
Requisitos
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (incluir Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |