Partilhar via


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

Consulte também

KeQueryNodeActiveAffinity2

KeQueryLogicalProcessorRelationship

GROUP_AFFINITY

KeQueryHighestNodeNumber

KeQueryHighestNodeNumber

KeQueryMaximumProcessorCountEx