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

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

KeGetCurrentProcessorNumber

KeQueryActiveProcessorCount

PROCESSOR_NUMBER