Freigeben über


IoGetDeviceNumaNode-Funktion (wdm.h)

Die IoGetDeviceNumaNode Routine ruft die Knotennummer eines Geräts ab.

Syntax

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

Parameter

[in] Pdo

Ein Zeiger auf ein physisches Geräteobjekt (PDO). Dieser Parameter verweist auf eine DEVICE_OBJECT Struktur, die ein physisches Gerät darstellt.

[out] NodeNumber

Ein Zeiger auf eine Position, in die die Routine die Knotennummer schreibt, wenn die Knotennummer bekannt ist.

Rückgabewert

IoGetDeviceNumaNode gibt STATUS_SUCCESS zurück, wenn der Anruf erfolgreich ist. Mögliche Fehlerrückgabewerte sind:

Rückgabecode Beschreibung
STATUS_NOT_FOUND
Die Knotennummer dieses Geräts ist unbekannt.
STATUS_INVALID_PARAMETER
Der Pdo--Parameter ist NULL- oder verweist nicht auf ein gültiges Geräteobjekt.

Bemerkungen

Bei einer nicht uniform memory access (NUMA)-Multiprozessorarchitektur ist ein Knoten eine Sammlung von Prozessoren, die schnellen Zugriff auf einen Speicherbereich freigeben. Der Speicherzugriff ist nicht einheitlich, da ein Prozessor schneller auf den Speicher in seinem Knoten zugreifen kann, als er auf den Speicher in anderen Knoten zugreifen kann.

Ein Gerät (z. B. ein Netzwerkcontroller oder Speichercontroller), der mit einem bestimmten Knoten verbunden ist, kann schneller auf den Speicher in diesem Knoten zugreifen, als er auf den Speicher in anderen Knoten zugreifen kann. Der Pdo--Parameter verweist auf einen PDO, der die Busverbindung zwischen dem Gerät und dem Knoten darstellt.

Wenn ein NUMA-Multiprozessorsystem n Knoten enthält, werden die Knoten von 0 bis n-1 nummeriert. Rufen Sie zum Abrufen der höchsten Knotennummer die KeQueryHighestNodeNumber Routine auf.

Nachdem das System initialisiert wurde, bleibt die Knotenanzahl fest, während das System weiterhin ausgeführt wird. Diese Anzahl kann nur Speicherknoten umfassen, bei denen es sich um Knoten handelt, die Arbeitsspeicher enthalten, aber keine aktiven logischen Prozessoren. Ein Knoten, in dem alle logischen Prozessoren inaktiv sind, ist effektiv ein speichergeschützter Knoten, bis der erste Prozessor im Knoten ausgeführt wird. Gehen Sie nicht davon aus, dass der Knoten, mit dem ein Gerät verbunden ist, aktive Prozessoren enthält.

Wenn ein System keine NUMA-Architektur aufweist, schreibt die Routine null an die Position, auf die der NodeNumber-Parameter verweist. Ein Beispiel für eine Nicht-NUMA-Architektur ist ein symmetrisches Multiprozessorsystem (SMP).

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows 7 und höheren Versionen von Windows-Betriebssystemen.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Siehe auch

DEVICE_OBJECT

KeQueryHighestNodeNumber