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 |
---|---|
|
Die Knotennummer dieses Geräts ist unbekannt. |
|
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) |