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 |
---|---|
|
Le numéro de nœud de cet appareil est inconnu. |
|
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) |