Função KeQueryNodeActiveAffinity (wdm.h)
A rotina KeQueryNodeActiveAffinity obtém a afinidade atual do processador de um nó especificado em um sistema multiprocessador que tem uma arquitetura numa (acesso à memória) não uniforme.
Sintaxe
void KeQueryNodeActiveAffinity(
[in] USHORT NodeNumber,
[out, optional] PGROUP_AFFINITY Affinity,
[out, optional] PUSHORT Count
);
Parâmetros
[in] NodeNumber
O número do nó. Se um sistema multiprocessador contiver n nós, os nós serão numerados de 0 a n-1. Para obter o número de nó mais alto (n-1) no sistema, chame a rotina de KeQueryHighestNodeNumber.
[out, optional] Affinity
Um ponteiro para um buffer alocado por chamador no qual a rotina grava uma estrutura GROUP_AFFINITY. Essa estrutura contém o número de grupo do grupo que contém o nó identificado por NodeNumber e uma máscara de afinidade que indica quais processadores lógicos no nó estão ativos. Você pode definir esse parâmetro para NULL se não precisar dessas informações.
A partir do Windows Server 2022, um nó pode abranger mais de um grupo. Isso acontece quando um nó contém mais de 64 processadores. Nesse caso, o sistema operacional atribui um grupo primário para cada nó NUMA. O grupo primário é sempre o que contém mais processadores. Nesse caso, a estrutura de afinidade de grupo retornada é para o grupo primário do nó. Para obter mais informações sobre essa alteração no comportamento, consulte suporte a NUMA. Se o código for executado em sistemas com mais de 64 processadores por nó NUMA, considere usar KeQueryNodeActiveAffinity2.
[out, optional] Count
Um ponteiro para um local no qual a rotina grava o número de processadores ativos representados na máscara de afinidade de nó que é apontada por Affinity. Você pode definir esse parâmetro para NULL se não precisar dessas informações.
A partir do Windows Server 2022, a contagem retornada é para o grupo primário do nó. Veja mais informações sobre grupos primários acima.
Valor de retorno
Nenhum
Observações
O buffer alocado pelo chamador apontado pelo parâmetro Affinity deve ser grande o suficiente para conter uma estrutura GROUP_AFFINITY. O Mask membro dessa estrutura contém uma máscara de afinidade que indica quais processadores estão ativos. Se um processador estiver ativo, o bit correspondente na máscara será um. Todos os outros bits são zero.
Em uma arquitetura de multiprocessador NUMA, um nó é uma coleção de processadores que compartilham acesso rápido a uma região de memória. O acesso à memória não é uniforme porque um processador pode acessar a memória em seu nó mais rapidamente do que pode acessar a memória em outros nós.
O número de processadores em um nó não pode exceder o número de bits na máscara de afinidade na estrutura que é apontada pelo Affinity. A máscara de afinidade também determina o número máximo de processadores em um grupo.
No Windows 10, versão 2004 e versões anteriores, se durante a inicialização do sistema, o Windows encontrar um nó de hardware NUMA que contenha mais processadores lógicos do que caberá em um grupo, o Windows dividirá o nó em nós menores e lógicos. Cada um desses nós não excede o tamanho máximo do grupo. O parâmetro NodeNumber identifica um nó lógico. Para obter o número máximo de processadores por grupo, chame a rotina KeQueryMaximumProcessorCountEx.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível no Windows 7 e versões posteriores do Windows. |
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | Qualquer nível |