KeSetImportanceDpc 函式 (ntddk.h)

KeSetImportanceDpc 例程會指定 DPC 例程的執行時間。

語法

void KeSetImportanceDpc(
  [in, out] PRKDPC          Dpc,
  [in]      KDPC_IMPORTANCE Importance
);

參數

[in, out] Dpc

呼叫端的 DPC 物件的指標, KeInitializeDpc 已經初始化。

[in] Importance

指定下列其中一個系統定義的值,以判斷使用任一例程將 DPC 排入佇列時 ,KeInsertQueueDpcIoRequestDpc 的行為。

LowImportance

將 DPC 放在 DPC 佇列的結尾,而且不會開始處理佇列。

MediumImportance

將 DPC 放在 DPC 佇列的結尾。 如果 DPC 已指派給目前處理器的 DPC 佇列,請立即開始處理佇列。 MediumImportanceImportance 的預設值。

MediumHighImportance

將 DPC 放在 DPC 佇列的結尾,然後立即開始處理佇列。 MediumHighImportance 僅適用於 Windows Vista 和更新版本的 Windows。

HighImportance

將 DPC 放在 DPC 佇列的開頭,然後立即開始處理佇列。

傳回值

備註

KeSetImportanceDpc 例程會藉由判斷下列方式影響 DPC 排入佇列之後,執行多久時間:

  • DPC 佇列中 DPC 的位置。 一般而言, KeInsertQueueDpcIoRequestDpc 例程會將 DPC 放在佇列的結尾。 如果驅動程式先呼叫具有 Importance = HighImportance 的 KeSetImportanceDpc,KeInsertQueueDpcIoRequestDpc 會將 DPC 放在佇列的開頭。
  • 當系統開始處理 DPC 佇列時。 一般而言, KeInsertQueueDpcIoRequestDpc 會立即開始處理目前處理器的 DPC 佇列。 驅動程式可以針對 [重要性 ] 指定不同的值,以變更此行為。
根據預設,DPC 會指派給目前處理器的 DPC 佇列,因此為 Importance 指定 MediumImportanceMediumHighImportance 具有相同的效果。 不過,驅動程式可以使用 KeSetTargetProcessorDpc 來變更 DPC 將指派給的處理器。

針對 Windows Vista 和更新版本的 Windows 作業系統,您可以使用 KeSetImportanceDpc 進行線程的 DPC。 如果呼叫端將 Importance 設定為 HighImportance,DPC 會放在佇列的開頭;否則,它會放在結尾。 處理線程 DPC 佇列時,例程不會影響例程。 在 IRQL = PASSIVE_LEVEL的專用線程一律會處理線程線程。 如需線程 DPC 的詳細資訊,請參閱 線程式 DPC 簡介

請注意,驅動程式必須先呼叫 KeSetImportanceDpc ,才能呼叫 KeInsertQueueDpcIoRequestDpc 以產生任何作用。

如需系統如何處理 DPC 佇列的詳細資訊,請參閱 DPC 佇列的組織

規格需求

需求
最低支援的用戶端 從 Windows 2000 開始提供。
目標平台 Universal
標頭 ntddk.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL 任何層級

另請參閱

IoRequestDpc

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

KeSynchronizeExecution