Функция 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) |