KeGetProcessorNumberFromIndex-Funktion (ntifs.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) Windows 7
Zielplattform Universell
Header ntifs.h (einschließlich Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene

Weitere Informationen

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER