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 是 Importance的預設值。
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作系統,您可以針對線程的 DPC 使用 KeSetImportanceDpc。 如果呼叫端將 Importance 設定為 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 | 任何層級 |