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


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

См. также

KeGetCurrentProcessorNumber

KeQueryActiveProcessorCount

PROCESSOR_NUMBER