Функция KeGetCurrentProcessorNumberEx (wdm.h)
Подпрограмма KeGetCurrentProcessorNumberEx получает номер логического процессора, на котором выполняется вызывающий объект.
Синтаксис
ULONG KeGetCurrentProcessorNumberEx(
[out, optional] PPROCESSOR_NUMBER ProcNumber
);
Параметры
[out, optional] ProcNumber
Указатель на буфер, выделенный вызывающим объектом, в который подпрограмма записывает PROCESSOR_NUMBER структуру, которая идентифицирует текущий логический процессор. Эта структура содержит номер группы и номер процессора относительно группы. Если эти сведения не нужны, для этого параметра можно задать значение NULL .
Возвращаемое значение
KeGetCurrentProcessorNumberEx возвращает общесистемный индекс процессора логического процессора, на котором выполняется вызывающий объект.
Комментарии
Если значение ProcNumber не равно NULL, буфер, на который указывает ProcNumber , должен быть достаточно большим, чтобы содержать PROCESSOR_NUMBER структуру. В отличие от этой структуры, содержащей номер группы и номер процессора относительно группы, возвращаемое значение представляет собой индекс процессора, который идентифицирует процессор во всей многопроцессорной системе.
Например, если многопроцессорная система содержит две группы и каждая группа содержит 64 логических процессора, то номера процессоров в каждой группе варьируются от 0 до 63, но общесистемные индексы процессоров варьируются от 0 до 127.
Связанная подпрограмма KeGetCurrentProcessorNumber возвращает текущий номер процессора, но эта подпрограмма, в отличие от KeGetCurrentProcessorNumberEx, не предоставляет номер группы для процессора. В Windows 7 и более поздних версиях операционной системы Windows KeGetCurrentProcessorNumber возвращает номер процессора относительно группы, если вызывающий объект работает на процессоре в группе 0, что совместимо с поведением этой подпрограммы в более ранних версиях Windows, не поддерживающих группы. Однако если вызывающий объект работает на процессоре в любой группе, отличной от группы 0, эта подпрограмма возвращает число, которое меньше числа процессоров в группе 0. Это гарантирует, что возвращаемое значение меньше, чем возвращаемое значение подпрограммы KeQueryActiveProcessorCount . Существующие драйверы, вызывающие KeGetCurrentProcessorNumber и не использующие функции, ориентированные на группу, правильно работают в многопроцессорных системах с двумя или более группами. Однако драйверы, использующие все функции, ориентированные на группу в Windows 7 и более поздних версиях операционной системы Windows, должны вызывать KeGetCurrentProcessorNumberEx вместо KeGetCurrentProcessorNumber.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows 7 и более поздних версиях Windows. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Ntddk.h, Wdm.h, Ntddk.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень |