KeSetImportanceDpc 函数 (ntddk.h)
KeSetImportanceDpc 例程指定 DPC 例程的运行快。
语法
void KeSetImportanceDpc(
[in, out] PRKDPC Dpc,
[in] KDPC_IMPORTANCE Importance
);
参数
[in, out] Dpc
指向调用方 DPC 对象的指针, KeInitializeDpc 已初始化该对象。
[in] Importance
指定以下系统定义的值之一,以确定使用任一例程对 DPC 进行排队时 KeInsertQueueDpc 和 IoRequestDpc 的行为。
LowImportance
将 DPC 放在 DPC 队列的末尾,不要开始处理队列。
MediumImportance
将 DPC 放在 DPC 队列的末尾。 如果将 DPC 分配给当前处理器的 DPC 队列,请立即开始处理队列。 MediumImportance 是 Importance 的默认值。
MediumHighImportance
将 DPC 放在 DPC 队列的末尾,然后立即开始处理队列。 MediumHighImportance 仅在 Windows Vista 和更高版本的 Windows 上可用。
HighImportance
将 DPC 放在 DPC 队列的开头,然后立即开始处理队列。
返回值
无
备注
KeSetImportanceDpc 例程通过确定以下因素影响 DPC 在排队后运行多长时间:
- DPC 在 DPC 队列中的位置。 通常, KeInsertQueueDpc 和 IoRequestDpc 例程将 DPC 放在队列的末尾。 如果驱动程序首先调用具有 Importance = HighImportance 的 KeSetImportanceDpc,KeInsertQueueDpc 和 IoRequestDpc 会将 DPC 放在队列的开头。
- 当系统开始处理 DPC 队列时。 通常, KeInsertQueueDpc 和 IoRequestDpc 会立即开始处理当前处理器的 DPC 队列。 驱动程序可以为 Importance 指定不同的值来更改此行为。
对于 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) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |