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


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

Подпрограмма KeSetImportanceDpc указывает, как скоро будет запущена подпрограмма DPC.

Синтаксис

void KeSetImportanceDpc(
  [in, out] PRKDPC          Dpc,
  [in]      KDPC_IMPORTANCE Importance
);

Параметры

[in, out] Dpc

Указатель на объект DPC вызывающего объекта, который уже инициализирован KeInitializeDpc .

[in] Importance

Задает одно из следующих системных значений, чтобы определить поведение KeInsertQueueDpc и IoRequestDpc , когда любая из подпрограмм используется для постановки DPC в очередь.

LowImportance

Поместите DPC в конец очереди DPC и не начинайте обработку очереди.

MediumImportance

Поместите DPC в конец очереди DPC. Если DPC назначен очереди DPC текущего процессора, немедленно начните обработку очереди. MediumImportance — это значение по умолчанию для параметра Важность.

MediumHighImportance

Поместите DPC в конец очереди DPC и немедленно приступите к ее обработке. MediumHighImportance доступен только в Windows Vista и более поздних версиях Windows.

HighImportance

Поместите DPC в начало очереди DPC и немедленно приступите к ее обработке.

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

None

Remarks

Подпрограмма KeSetImportanceDpc влияет на то, как скоро DPC запускается после его постановки в очередь, определяя:

  • Расположение DPC в очереди DPC. Как правило, подпрограммы KeInsertQueueDpc и IoRequestDpc размещают DPC в конце очереди. Если драйвер впервые вызывает KeSetImportanceDpc с важностью = HighImportance, KeInsertQueueDpc и IoRequestDpc поместят DPC в начало очереди.
  • Когда система начинает обработку очереди DPC. Как правило, KeInsertQueueDpc и IoRequestDpc немедленно начинают обработку очереди DPC для текущего процессора. Чтобы изменить это поведение, драйверы могут указать разные значения для параметра Важность .
По умолчанию DPC назначаются очереди DPC для текущего процессора, поэтому указание MediumImportance или MediumHighImportance для параметра Важность имеет тот же эффект. Однако драйверы могут использовать KeSetTargetProcessorDpc для изменения процессора, которому будет назначен DPC.

Для Windows Vista и более поздних версий операционной системы Windows можно использовать KeSetImportanceDpc для потоковых DPC. Если вызывающий объект устанавливает для параметра Importance значение HighImportance, DPC помещается в начало очереди; в противном случае он помещается в конце. Подпрограмма не влияет на обработку очереди DPC с потоком. Потоковые DPC всегда обрабатываются выделенным потоком в IRQL = PASSIVE_LEVEL. Дополнительные сведения о потоковых DPC см. в статье Общие сведения о потоковом DPC.

Обратите внимание, что драйвер должен вызвать KeSetImportanceDpc , прежде чем вызывать KeInsertQueueDpc и IoRequestDpc , чтобы иметь какое-либо действие.

Дополнительные сведения о том, как система обрабатывает очередь DPC, см. в разделе Организация очередей DPC.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень

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

IoRequestDpc

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

KeSynchronizeExecution