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