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 放在佇列的結尾。 如果驅動程式先呼叫具有 Importance = HighImportance 的 KeSetImportanceDpc,KeInsertQueueDpc 和 IoRequestDpc 會將 DPC 放在佇列的開頭。
- 當系統開始處理 DPC 佇列時。 一般而言, KeInsertQueueDpc 和 IoRequestDpc 會立即開始處理目前處理器的 DPC 佇列。 驅動程式可以針對 [重要性 ] 指定不同的值,以變更此行為。
針對 Windows Vista 和更新版本的 Windows 作業系統,您可以使用 KeSetImportanceDpc 進行線程的 DPC。 如果呼叫端將 Importance 設定為 HighImportance,DPC 會放在佇列的開頭;否則,它會放在結尾。 處理線程 DPC 佇列時,例程不會影響例程。 在 IRQL = PASSIVE_LEVEL的專用線程一律會處理線程線程。 如需線程 DPC 的詳細資訊,請參閱 線程式 DPC 簡介。
請注意,驅動程式必須先呼叫 KeSetImportanceDpc ,才能呼叫 KeInsertQueueDpc 和 IoRequestDpc 以產生任何作用。
如需系統如何處理 DPC 佇列的詳細資訊,請參閱 DPC 佇列的組織。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | 任何層級 |