共用方式為


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 放在佇列結尾。 如果驅動程式第一次呼叫 KeSetImportanceDpcImportance = HighImportanceKeInsertQueueDpcIoRequestDpc 會將 DPC 放在佇列的開頭。
  • 當系統開始處理 DPC 佇列時。 一般而言,KeInsertQueueDpcIoRequestDpc 立即開始處理目前處理器的 DPC 佇列。 驅動程式可以針對 重要性 指定不同的值,以變更此行為。
根據預設,DPC 會指派給目前處理器的 DPC 佇列,因此針對 Importance 指定 MediumImportanceMediumHighImportance 具有相同效果。 不過,驅動程式可以使用 KeSetTargetProcessorDpc 來變更將指派 DPC 的處理器。

針對 Windows Vista 和更新版本的 Windows作系統,您可以針對線程的 DPC 使用 KeSetImportanceDpc。 如果呼叫端將 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)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何層級

另請參閱

IoRequestDpc

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

KeSynchronizeExecution