Функция KeGetCurrentProcessorNumber (ntddk.h)

Подпрограмма KeGetCurrentProcessorNumber возвращает назначенный системой номер текущего процессора, на котором выполняется вызывающий объект.

Синтаксис

ULONG KeGetCurrentProcessorNumber();

Возвращаемое значение

KeGetCurrentProcessorNumber возвращает значение ULONG, представляющее процессор, на котором в данный момент выполняется вызывающий объект.

Комментарии

KeGetCurrentProcessorNumber можно вызвать для отладки использования спин-блокировки на компьютерах SMP во время разработки драйверов. Драйвер также может вызвать KeGetCurrentProcessorNumber , если он поддерживает некоторые данные для каждого процессора и пытается уменьшить количество конфликтов в строках кэша.

Число процессоров на компьютере SMP является отсчитываемое от нуля значение.

Windows 7 и более поздние версии Windows поддерживают группы процессоров. Драйверы, предназначенные для обработки сведений о группах процессоров, должны использовать подпрограмму KeGetCurrentProcessorNumberEx , которая задает группу процессоров, а не KeGetCurrentProcessorNumber, которая не использует. Однако реализация KeGetCurrentProcessorNumber в Windows 7 и более поздних версиях Windows обеспечивает совместимость драйверов, написанных для более ранних версий Windows. В этой реализации KeGetCurrentProcessorNumber возвращает номер процессора, относящийся к группе, если вызывающий объект работает на процессоре в группе 0, что совместимо с поведением этой подпрограммы в более ранних версиях Windows, не поддерживающих группы процессоров. Если вызывающий объект работает на процессоре в любой группе, отличной от группы 0, эта подпрограмма возвращает число, которое меньше числа процессоров в группе 0. Это гарантирует, что возвращаемое значение меньше, чем возвращаемое значение подпрограммы KeQueryActiveProcessorCount .

Если вызов KeGetCurrentProcessorNumber происходит по адресу IRQL <= APC_LEVEL, между инструкциями может произойти переключение процессора. Следовательно, вызывающие функции KeGetCurrentProcessorNumber обычно выполняются по адресу IRQL >= DISPATCH_LEVEL.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Персональный компьютер
Верхняя часть ntddk.h (включая Ntddk.h)
IRQL См. раздел "Примечания".
Правила соответствия DDI Irql_Miscellaneous_Function(ndis)

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

KeGetCurrentProcessorNumberEx

KeQueryActiveProcessorCount