Partager via


Fonction IoGetDeviceNumaNode (wdm.h)

La routine IoGetDeviceNumaNode obtient le numéro de nœud d’un appareil.

Syntaxe

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

Paramètres

[in] Pdo

Pointeur vers un objet d’appareil physique (PDO). Ce paramètre pointe vers une structure DEVICE_OBJECT qui représente un appareil physique.

[out] NodeNumber

Pointeur vers un emplacement dans lequel la routine écrit le numéro de nœud, si le numéro de nœud est connu.

Valeur de retour

IoGetDeviceNumaNode retourne STATUS_SUCCESS si l’appel réussit. Les valeurs de retour d’erreur possibles sont les suivantes :

Retourner le code Description
STATUS_NOT_FOUND
Le numéro de nœud de cet appareil est inconnu.
STATUS_INVALID_PARAMETER
Le paramètre Pdo est NULL ou ne pointe pas vers un objet d’appareil valide.

Remarques

Dans une architecture multiprocesseur d’accès à la mémoire non uniforme (NUMA), un nœud est une collection de processeurs qui partagent un accès rapide à une région de mémoire. L’accès à la mémoire n’est pas uniforme, car un processeur peut accéder à la mémoire dans son nœud plus rapidement qu’il ne peut accéder à la mémoire dans d’autres nœuds.

Un appareil (par exemple, un contrôleur de réseau ou un contrôleur de stockage) connecté à un nœud particulier peut accéder à la mémoire dans ce nœud plus rapidement qu’il ne peut accéder à la mémoire dans d’autres nœuds. Le paramètre Pdo pointe vers un PDO qui représente la connexion de bus entre l’appareil et le nœud.

Si un système multiprocesseur NUMA contient n nœuds, les nœuds sont numérotés de 0 à n-1. Pour obtenir le numéro de nœud le plus élevé, appelez la routine KeQueryHighestNodeNumber.

Une fois le système initialisé, le nombre de nœuds reste fixe pendant que le système continue à s’exécuter. Ce nombre peut inclure des nœuds mémoire uniquement, qui sont des nœuds qui contiennent de la mémoire, mais pas de processeurs logiques actifs. Un nœud dans lequel tous les processeurs logiques sont inactifs est effectivement un nœud mémoire uniquement jusqu’à ce que le premier processeur du nœud commence à s’exécuter. Ne supposez pas que le nœud auquel un appareil est connecté contient des processeurs actifs.

Si un système n’a pas d’architecture NUMA, la routine écrit zéro à l’emplacement vers lequel le paramètre NodeNumber pointe. Un exemple d’architecture non NUMA est un système symétrique multiprocesseur (SMP).

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows 7 et versions ultérieures des systèmes d’exploitation Windows.
plateforme cible Universel
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
règles de conformité DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Voir aussi

DEVICE_OBJECT

KeQueryHighestNodeNumber