Функция 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 | Любой уровень |