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, an der die Routine die Knotennummer schreibt, wenn die Knotennummer bekannt ist.

Rückgabewert

IoGetDeviceNumaNode gibt STATUS_SUCCESS zurück, wenn der Aufruf 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 zeigt nicht auf ein gültiges Geräteobjekt.

Hinweise

In einer NUMA-Multiprozessorarchitektur (Non-Uniform Memory Access) ist ein Knoten eine Sammlung von Prozessoren, die den schnellen Zugriff auf eine Speicherregion gemeinsam nutzen. Der Arbeitsspeicherzugriff ist nicht einheitlich, da ein Prozessor schneller auf den Arbeitsspeicher in seinem Knoten zugreifen kann als auf den Arbeitsspeicher in anderen Knoten.

Ein Gerät (z. B. ein Netzwerkcontroller oder Speichercontroller), das mit einem bestimmten Knoten verbunden ist, kann schneller auf den Arbeitsspeicher in diesem Knoten zugreifen als auf den Arbeitsspeicher in anderen Knoten. Der Pdo-Parameter verweist auf ein PDO, das 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. Um die höchste Knotennummer zu erhalten, rufen Sie die KeQueryHighestNodeNumber-Routine auf.

Nachdem das System initialisiert wurde, bleibt die Knotenanzahl festgelegt, während das System weiterhin ausgeführt wird. Diese Anzahl kann nur Arbeitsspeicherknoten enthalten, d. h. Knoten, die Arbeitsspeicher, aber keine aktiven logischen Prozessoren enthalten. Ein Knoten, in dem alle logischen Prozessoren inaktiv sind, ist effektiv ein nur Arbeitsspeicherknoten, 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 nicht über eine NUMA-Architektur verfügt, schreibt die Routine null an den Speicherort, auf den der NodeNumber-Parameter verweist. Ein Beispiel für eine Nicht-NUMA-Architektur ist ein symmetrisches Multiprozessorsystem (SMP).

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 7 und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

DEVICE_OBJECT

KeQueryHighestNodeNumber