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

Confira também

Vários processadores

Funções de thread e processo

Processos

Grupos de processadores

SetProcessAffinityMask

SetThreadAffinityMask