Compartir a través de


Función KeQueryNodeActiveAffinity (wdm.h)

La rutina KeQueryNodeActiveAffinity obtiene la afinidad de procesador actual de un nodo especificado en un sistema multiprocesador que tiene una arquitectura de acceso a memoria no uniforme (NUMA).

Sintaxis

void KeQueryNodeActiveAffinity(
  [in]            USHORT          NodeNumber,
  [out, optional] PGROUP_AFFINITY Affinity,
  [out, optional] PUSHORT         Count
);

Parámetros

[in] NodeNumber

Número de nodo. Si un sistema multiprocesador contiene n nodos, los nodos se numeran de 0 a n-1. Para obtener el número de nodo más alto (n-1) en el sistema, llame a la rutina KeQueryHighestNodeNumber .

[out, optional] Affinity

Puntero a un búfer asignado por el autor de la llamada en el que la rutina escribe una estructura de GROUP_AFFINITY . Esta estructura contiene el número de grupo del grupo que contiene el nodo identificado por NodeNumber y una máscara de afinidad que indica qué procesadores lógicos del nodo están activos. Puede establecer este parámetro en NULL si no necesita esta información.

A partir de Windows Server 2022, un nodo puede abarcar más de un grupo. Esto sucede cuando un nodo contiene más de 64 procesadores. En este caso, el sistema operativo asigna un grupo principal para cada nodo NUMA. El grupo principal es siempre el que contiene la mayoría de los procesadores. En este caso, la estructura de afinidad de grupo devuelta es para el grupo principal del nodo. Para obtener más información sobre este cambio en el comportamiento, consulte Compatibilidad con NUMA. Si el código se ejecuta en sistemas con más de 64 procesadores por nodo NUMA, considere la posibilidad de usar KeQueryNodeActiveAffinity2.

[out, optional] Count

Puntero a una ubicación en la que la rutina escribe el número de procesadores activos representados en la máscara de afinidad de nodo a la que apunta Affinity. Puede establecer este parámetro en NULL si no necesita esta información.

A partir de Windows Server 2022, el recuento devuelto es para el grupo principal del nodo. Consulte más información sobre los grupos principales anteriores.

Valor devuelto

None

Observaciones

El búfer asignado por el autor de la llamada al que apunta el parámetro Affinity debe ser lo suficientemente grande como para contener una estructura GROUP_AFFINITY . El miembro Mask de esta estructura contiene una máscara de afinidad que indica qué procesadores están activos. Si un procesador está activo, el bit correspondiente de la máscara es uno. Todos los demás bits son cero.

En una arquitectura de varios procesadores NUMA, un nodo es una colección de procesadores que comparten acceso rápido a una región de memoria. El acceso a la memoria no es uniforme porque un procesador puede acceder a la memoria en su nodo más rápido de lo que puede acceder a la memoria en otros nodos.

El número de procesadores de un nodo no puede superar el número de bits de la máscara de afinidad en la estructura a la que apunta Affinity. La máscara de afinidad también determina el número máximo de procesadores de un grupo.

En Windows 10, versión 2004 y versiones anteriores, si durante la inicialización del sistema, Windows encuentra un nodo de hardware NUMA que contiene más procesadores lógicos de los que caben en un grupo, Windows divide el nodo en nodos lógicos más pequeños. Cada uno de estos nodos no supera el tamaño máximo del grupo. El parámetro NodeNumber identifica un nodo lógico. Para obtener el número máximo de procesadores por grupo, llame a la rutina KeQueryMaximumProcessorCountEx .

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows 7 y versiones posteriores de Windows.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL Cualquier nivel

Consulte también

KeQueryNodeActiveAffinity2

KeQueryLogicalProcessorRelationship

GROUP_AFFINITY

KeQueryHighestNodeNumber

KeQueryHighestNodeNumber

KeQueryMaximumProcessorCountEx