KeGetProcessorNumberFromIndex-Funktion (ntifs.h)
Die KeGetProcessorNumberFromIndex Routine wandelt einen systemweiten Prozessorindex in eine Gruppennummer und eine gruppenrelative Prozessornummer um.
NTSTATUS KeGetProcessorNumberFromIndex(
[in] ULONG ProcIndex,
[out] PPROCESSOR_NUMBER ProcNumber
);
[in] ProcIndex
Ein systemweiter Prozessorindex. Wenn ein Multiprozessorsystem insgesamt n logische Prozessoren enthält, reichen gültige 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 die gruppenrelative Prozessornummer des Prozessors schreibt, der durch ProcIndex-identifiziert wird.
KeGetProcessorNumberFromIndex gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Mögliche Fehlerrückgabewerte sind:
Rückgabecode | Beschreibung |
---|---|
|
Der ProcIndex Parameterwert ist kein gültiger Prozessorindex. |
Diese Routine akzeptiert als Eingabe einen Prozessorindex, der den Prozessor im gesamten Multiprozessorsystem identifiziert. Der Ausgabewert ist eine PROCESSOR_NUMBER Struktur, die einen Prozessor anhand seiner Gruppennummer und seiner Prozessornummer innerhalb der Gruppe identifiziert.
Wenn z. B. ein Multiprozessorsystem zwei Gruppen enthält und jede Gruppe 64 logische Prozessoren enthält, liegen die Prozessornummern in jeder Gruppe zwischen 0 und 63, aber die systemweiten Prozessorindizes reichen von 0 bis 127.
Rufen Sie zum Abrufen der Gesamtzahl der aktiven logischen Prozessoren im System die KeQueryActiveProcessorCountEx Routine auf.
Die KeGetProcessorIndexFromNumber Routine wandelt eine Gruppennummer und eine gruppenrelative Prozessornummer in einen systemweiten Prozessorindex um.
Im folgenden Codebeispiel werden die KeQueryActiveProcessorCountEx und KeGetProcessorNumberFromIndex Routinen verwendet, um alle aktiven logischen Prozessoren im System aufzählen zu können:
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 konstanten Wert ALL_PROCESSOR_GROUPS wird in Winnt.h und Ntdef.h definiert.
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 7 |
Zielplattform- | Universal |
Header- | ntifs.h (include Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | Beliebige Ebene |