Функция KeSetTargetProcessorDpcEx (wdm.h)
Подпрограмма KeSetTargetProcessorDpcEx указывает процессор, на котором будет выполняться подпрограмма DPC.
Синтаксис
NTSTATUS KeSetTargetProcessorDpcEx(
[in, out] PKDPC Dpc,
[in] PPROCESSOR_NUMBER ProcNumber
);
Параметры
[in, out] Dpc
Указатель на объекта DPC вызывающего объекта. Этот параметр указывает на структуру KDPC, которая является непрозрачной системной структурой, представляющей объект DPC. Этот объект должен быть инициализирован подпрограммой KeInitializeDpc.
[in] ProcNumber
Указатель на выделенную вызывающим PROCESSOR_NUMBER структуру, которая определяет целевой процессор, на котором DPC будет помещен в очередь и выполнен. Эта структура указывает группу и обработчик в этой группе.
Возвращаемое значение
KeSetTargetProcessorDpcEx возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается следующее:
Возвращаемый код | Описание |
---|---|
|
Параметр procNumber указывает на недопустимый номер процессора. |
Замечания
Каждый процессор в многопроцессорной системе имеет собственную очередь DPC. KeSetTargetProcessorDpcEx указывает очередь процессора, которую система должна использовать, когда драйвер вызывает KeInsertQueueDpc или IoRequestDpc подпрограмму для очереди DPC, которая будет выполняться позже.
KeSetTargetProcessorDpcEx может указать целевой процессор как для обычных ЦП, так и для потоковых ЦП. Обычный DPC не может быть преумножен даже высокоприоритетным потоком, но потоковый DPC может быть предопределен критическими потоками времени, которые имеют достаточно высокие приоритеты.
Связанная подпрограмма, KeSetTargetProcessorDpc, задает целевой процессор для DPC, но эта подпрограмма, в отличие от KeSetTargetProcessorDpcEx, не указывает группу для целевого процессора. Начиная с Windows 7, KeSetTargetProcessorDpc предполагает, что целевой процессор принадлежит группе 0. Это гарантирует, что существующие драйверы, вызывающие KeSetTargetProcessorDpc и которые не используют групповые функции, будут работать правильно в многопроцессорных системах с двумя или более группами. Однако драйверы, использующие любые групповые функции в Windows 7 и более поздних версиях операционной системы Windows, должны вызывать KeSetTargetProcessorDpcEx вместо KeSetTargetProcessorDpc.
Вызов KeSetTargetProcessorDpcEx, который возникает после того, как объект DPC был поставлен в очередь, не влияет на выбор процессора для выполнения подпрограммы DPC. Чтобы контролировать выбор целевого процессора, необходимо выполнить вызов KeSetTargetProcessorDpcEx перед вызовом KeInsertQueueDpc или IoRequestDpc, в очереди объекта DPC.
Дополнительные сведения о очередях DPC см. в организации очередей DPC.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 7. |
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень |