Функция 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 для текущего процессора. Чтобы изменить это поведение, драйверы могут указать разные значения для параметра Важность .
Для 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 | Любой уровень |