Функция KeGetProcessorNumberFromIndex (ntifs.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, если вызов выполнен успешно. Возможные возвращаемые значения ошибок:
Код возврата | Описание |
---|---|
|
Значение параметра 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 |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень |