KeSetImportanceDpc 函数 (wdm.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 是 重要性的默认值。
MediumHighImportance
将 DPC 置于 DPC 队列的末尾,然后立即开始处理队列。 MediumHighImportance 仅适用于 Windows Vista 和更高版本的 Windows。
HighImportance
将 DPC 置于 DPC 队列的开头,然后立即开始处理队列。
返回值
没有
言论
KeSetImportanceDpc 例程会影响 DPC 在排队后运行时间,方法是确定:
- DPC 队列中 DPC 的位置。 通常,KeInsertQueueDpc 和 IoRequestDpc 例程将 DPC 置于队列末尾。 如果驱动程序首先调用 KeSetImportanceDpc,Importance = HighImportance,KeInsertQueueDpc,IoRequestDpc 会将 DPC 置于队列的开头。
- 系统开始处理 DPC 队列时。 通常,KeInsertQueueDpc 和 IoRequestDpc 立即开始处理当前处理器的 DPC 队列。 驱动程序可以为 重要性 指定不同的值来更改此行为。
对于 Windows Vista 和更高版本的 Windows作系统,可以将 KeSetImportanceDpc 用于线程 DPC。 如果调用方将重要性 设置为 HighImportance,则 DPC 将置于队列的开头;否则,它放置在末尾。 处理线程 DPC 队列时,例程不会影响该例程。 线程化 DPC 始终由 IRQL = PASSIVE_LEVEL 的专用线程处理。 有关线程式 DPC 的详细信息,请参阅 线程式 DPC简介。
请注意,驱动程序必须先调用 KeSetImportanceDpc,然后才能调用 KeInsertQueueDpc,IoRequestDpc 才能产生任何影响。
有关系统如何处理 DPC 队列的详细信息,请参阅 DPC 队列的组织。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 普遍 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |