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 retournée

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

Code de retour Description
STATUS_NOT_FOUND
Le numéro de nœud de cet appareil est inconnu.
STATUS_INVALID_PARAMETER
Le paramètre Pdo a la valeur 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 d’autres nœuds.

Un appareil (par exemple, un contrôleur réseau ou un contrôleur de stockage) connecté à un nœud particulier peut accéder à la mémoire de ce nœud plus rapidement qu’il ne peut accéder à la mémoire 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 de s’exécuter. Ce nombre peut inclure des nœuds de 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 en fait un nœud de mémoire uniquement jusqu’à ce que le premier processeur du nœud commence à s’exécuter. Ne partez pas du principe 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 dans l’emplacement vers lequel pointe le paramètre NodeNumber . Un exemple d’architecture non-NUMA est un système multiprocesseur symétrique (SMP).

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 7 et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Universal
En-tête wdm.h (inclure 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