Função SetProcessAffinityMask (winbase.h)
Define uma máscara de afinidade de processador para os threads do processo especificado.
Sintaxe
BOOL SetProcessAffinityMask(
[in] HANDLE hProcess,
[in] DWORD_PTR dwProcessAffinityMask
);
Parâmetros
[in] hProcess
Um identificador para o processo cuja máscara de afinidade deve ser definida. Esse identificador deve ter o direito de acesso PROCESS_SET_INFORMATION . Para obter mais informações, consulte Direitos de acesso e segurança do processo.
[in] dwProcessAffinityMask
A máscara de afinidade para os threads do processo.
Em um sistema com mais de 64 processadores, a máscara de afinidade deve especificar processadores em um único grupo de processadores.
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Se a máscara de afinidade de processo solicitar um processador que não esteja configurado no sistema, o último código de erro será ERROR_INVALID_PARAMETER.
Em um sistema com mais de 64 processadores, se o processo de chamada contiver threads em mais de um grupo de processadores, o último código de erro será ERROR_INVALID_PARAMETER.
Comentários
Uma máscara de afinidade de processo é um vetor de bits no qual cada bit representa um processador lógico no qual os threads do processo podem ser executados. O valor da máscara de afinidade de processo deve ser um subconjunto dos valores de máscara de afinidade do sistema obtidos pela função GetProcessAffinityMask . 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 afinidade de processo é herdada por qualquer processo filho ou processo local recém-instanciado.
Não chame SetProcessAffinityMask em uma DLL que possa ser chamada por processos diferentes dos seus.
Em um sistema com mais de 64 processadores, a função SetProcessAffinityMask pode ser usada para definir a máscara de afinidade de processo apenas para processos com threads em um único grupo de processadores. Use a função SetThreadAffinityMask para definir a máscara de afinidade para threads individuais em vários grupos. Isso altera efetivamente a atribuição de grupo do processo.
A partir do Windows 11 e do Windows Server 2022, em um sistema com mais de 64 processadores, as afinidades de processo e thread abrangem todos os processadores no sistema, em todos os grupos de processadores, por padrão. Em vez de sempre falhar caso o processo de chamada contenha threads em mais de um grupo de processadores, a função SetProcessAffinityMask falhará (retornando zero com ERROR_INVALID_PARAMETER último código de erro) se o processo tiver definido explicitamente a afinidade de um ou mais de seus threads fora do grupo primário do processo.
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 |