KeGetProcessorNumberFromIndex-Funktion (wdm.h)
Die KeGetProcessorNumberFromIndex-Routine konvertiert einen systemweiten Prozessorindex in eine Gruppennummer und eine gruppenrelative Prozessornummer.
Syntax
NTSTATUS KeGetProcessorNumberFromIndex(
[in] ULONG ProcIndex,
[out] PPROCESSOR_NUMBER ProcNumber
);
Parameter
[in] ProcIndex
Ein systemweiter Prozessorindex. Wenn ein Mehrprozessorsystem insgesamt n logische Prozessoren enthält, reichen die gültigen Prozessorindizes von 0 bis n-1.
[out] ProcNumber
Ein Zeiger auf eine vom Aufrufer zugewiesene PROCESSOR_NUMBER Struktur, in die die Routine die Gruppennummer und gruppenrelative Prozessornummer des Prozessors schreibt, der durch ProcIndex identifiziert wird.
Rückgabewert
KeGetProcessorNumberFromIndex gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Mögliche Fehlerrückgabewerte sind:
Rückgabecode | Beschreibung |
---|---|
STATUS_INVALID_PARAMETER | Der ProcIndex-Parameterwert ist kein gültiger Prozessorindex. |
Hinweise
Diese Routine akzeptiert als Eingabe einen Prozessorindex, der den Prozessor über das gesamte Multiprozessorsystem identifiziert. Der Ausgabewert ist eine PROCESSOR_NUMBER Struktur, die einen Prozessor anhand seiner Gruppennummer und seiner Prozessornummer innerhalb der Gruppe identifiziert.
Wenn ein Mehrprozessorsystem beispielsweise zwei Gruppen enthält und jede Gruppe 64 logische Prozessoren enthält, reichen die Prozessornummern in jeder Gruppe von 0 bis 63, aber die systemweiten Prozessorindizes liegen zwischen 0 und 127.
Um die Gesamtzahl der aktiven logischen Prozessoren im System abzurufen, rufen Sie die KeQueryActiveProcessorCountEx-Routine auf.
Die KeGetProcessorIndexFromNumber-Routine konvertiert eine Gruppennummer und eine gruppenrelative Prozessornummer in einen systemweiten Prozessorindex.
Beispiele
Im folgenden Codebeispiel werden die Routinen KeQueryActiveProcessorCountEx und KeGetProcessorNumberFromIndex verwendet, um alle aktiven logischen Prozessoren im System aufzulisten:
ULONG Count;
ULONG ProcIndex;
PROCESSOR_NUMBER ProcNumber;
Count = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
for (ProcIndex = 0; ProcIndex < Count; ProcIndex += 1)
{
KeGetProcessorNumberFromIndex(ProcIndex, &ProcNumber);
// Do something with the contents of ProcNumber.
...
}
Der konstante Wert ALL_PROCESSOR_GROUPS wird in Winnt.h und Ntdef.h definiert.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows 7 und späteren Windows-Versionen. |
Zielplattform | Universell |
Header | wdm.h (include Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Beliebige Ebene |