Функция 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 (include Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень |