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 KeQueryHighestNodeNumber .

[out, optional] Affinity

Um ponteiro para um buffer alocado pelo chamador no qual a rotina grava uma estrutura GROUP_AFFINITY . Essa estrutura contém o número 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 como 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 aquele 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ó apontada pela Affinity. Você pode definir esse parâmetro como 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.

Retornar valor

Nenhum

Comentários

O buffer alocado pelo chamador apontado pelo parâmetro Affinity deve ser grande o suficiente para conter uma estrutura GROUP_AFFINITY . O membro Mask 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 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 apontada por Affinity. A máscara de afinidade também determina o número máximo de processadores em um grupo.

Em 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 lógicos menores. 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
Cliente mínimo com suporte Disponível no Windows 7 e versões posteriores do Windows.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível

Confira também

KeQueryNodeActiveAffinity2

KeQueryLogicalProcessorRelationship

GROUP_AFFINITY

KeQueryHighestNodeNumber

KeQueryHighestNodeNumber

KeQueryMaximumProcessorCountEx