Función IoGetDeviceNumaNode (wdm.h)

La rutina IoGetDeviceNumaNode obtiene el número de nodo de un dispositivo.

Sintaxis

NTSTATUS IoGetDeviceNumaNode(
  [in]  PDEVICE_OBJECT Pdo,
  [out] PUSHORT        NodeNumber
);

Parámetros

[in] Pdo

Puntero a un objeto de dispositivo físico (PDO). Este parámetro apunta a una estructura de DEVICE_OBJECT que representa un dispositivo físico.

[out] NodeNumber

Puntero a una ubicación en la que la rutina escribe el número de nodo, si se conoce el número de nodo.

Valor devuelto

IoGetDeviceNumaNode devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Entre los valores devueltos de error posibles se incluyen los siguientes:

Código devuelto Descripción
STATUS_NOT_FOUND
El número de nodo de este dispositivo es desconocido.
STATUS_INVALID_PARAMETER
El parámetro Pdo es NULL o no apunta a un objeto de dispositivo válido.

Comentarios

En una arquitectura de varios procesadores de acceso a memoria no uniforme (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.

Un dispositivo (por ejemplo, un controlador de red o un controlador de almacenamiento) conectado a un nodo determinado puede acceder a la memoria de este nodo más rápido de lo que puede acceder a la memoria en otros nodos. El parámetro Pdo apunta a un PDO que representa la conexión de bus entre el dispositivo y el nodo.

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

Una vez inicializado el sistema, el número de nodos permanece fijo mientras el sistema continúa ejecutándose. Este recuento puede incluir nodos de solo memoria, que son nodos que contienen memoria, pero no procesadores lógicos activos. Un nodo en el que todos los procesadores lógicos están inactivos es eficazmente un nodo de solo memoria hasta que el primer procesador del nodo comienza a ejecutarse. No suponga que el nodo al que está conectado un dispositivo contiene procesadores activos.

Si un sistema no tiene una arquitectura NUMA, la rutina escribe cero en la ubicación a la que apunta el parámetro NodeNumber . Un ejemplo de arquitectura que no es NUMA es un sistema de multiprocesador simétrico (SMP).

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows 7 y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

DEVICE_OBJECT

KeQueryHighestNodeNumber