Поделиться через


Функция KeGetCurrentProcessorNumberEx (ntddk.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.
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h, Wdm.h, Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень

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

KeGetCurrentProcessorNumber

KeQueryActiveProcessorCount

PROCESSOR_NUMBER