Функция KeGetProcessorNumberFromIndex (wdm.h)

Подпрограмма KeGetProcessorNumberFromIndex преобразует общесистемный индекс процессора в номер группы и номер процессора относительно группы.

Синтаксис

NTSTATUS KeGetProcessorNumberFromIndex(
  [in]  ULONG             ProcIndex,
  [out] PPROCESSOR_NUMBER ProcNumber
);

Параметры

[in] ProcIndex

Общесистемный индекс процессора. Если многопроцессорная система содержит в общей сложности n логических процессоров, допустимые индексы процессора варьируются от 0 до n-1.

[out] ProcNumber

Указатель на структуру, выделенную вызывающим объектом PROCESSOR_NUMBER , в которую подпрограмма записывает номер группы и номер процессора, относящееся к группе, процессора, определяемого ProcIndex.

Возвращаемое значение

KeGetProcessorNumberFromIndex возвращает STATUS_SUCCESS, если вызов выполнен успешно. Возможные возвращаемые значения ошибок:

Код возврата Описание
STATUS_INVALID_PARAMETER Значение параметра ProcIndex не является допустимым индексом процессора.

Комментарии

Эта подпрограмма принимает в качестве входных данных индекс процессора, который идентифицирует процессор во всей многопроцессорной системе. Выходное значение представляет собой PROCESSOR_NUMBER структуру, которая идентифицирует процессор по номеру группы и номеру процессора в группе.

Например, если многопроцессорная система содержит две группы и каждая группа содержит 64 логических процессора, то номера процессоров в каждой группе варьируются от 0 до 63, но общесистемные индексы процессоров варьируются от 0 до 127.

Чтобы получить общее количество активных логических процессоров в системе, вызовите подпрограмму KeQueryActiveProcessorCountEx .

Подпрограмма KeGetProcessorIndexFromNumber преобразует номер группы и номер процессора относительно группы в общесистемный индекс процессора.

Примеры

В следующем примере кода используются подпрограммы KeQueryActiveProcessorCountEx и KeGetProcessorNumberFromIndex для перечисления всех активных логических процессоров в системе:

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.
    ...
}

Постоянное значение ALL_PROCESSOR_GROUPS определено в Winnt.h и Ntdef.h.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 7 и более поздних версиях Windows.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень

См. также раздел

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER