共用方式為


KeSetTargetProcessorDpcEx 函式 (wdm.h)

KeSetTargetProcessorDpcEx 例程會指定執行 DPC 例程的處理器。

語法

NTSTATUS KeSetTargetProcessorDpcEx(
  [in, out] PKDPC             Dpc,
  [in]      PPROCESSOR_NUMBER ProcNumber
);

參數

[in, out] Dpc

呼叫端 DPC 物件的指標。 此參數指向 KDPC 結構,這是代表 DPC 物件的不透明系統結構。 此物件先前必須由 KeInitializeDpc 例程初始化。

[in] ProcNumber

呼叫端配置的 PROCESSOR_NUMBER 結構的指標,可識別 DPC 將排入佇列並執行的目標處理器。 此結構會指定此群組內的群組和處理器。

傳回值

如果呼叫成功,KeSetTargetProcessorDpcEx 會傳回STATUS_SUCCESS。 否則,它會傳回下列內容:

傳回碼 描述
STATUS_INVALID_PARAMETER
ProcNumber 參數指向無效的處理器編號。

言論

多處理器系統中的每個處理器都有自己的 DPC 佇列。 KeSetTargetProcessorDpcEx 指定當驅動程式呼叫 KeInsertQueueDpcIoRequestDpc 例程將 DPC 排入佇列時,系統應該使用的處理器佇列。

KeSetTargetProcessorDpcEx 可以為一般 DPC 和 線程的 DPC指定目標處理器。 即使是高優先順序線程,一般 DPC 也無法先佔,但線程 DPC 可由具有足夠高優先順序的時關鍵線程先佔。

KeSetTargetProcessorDpc相關的例程會指定 DPC 的目標處理器,但此例程與 KeSetTargetProcessorDpcEx不同,不會指定目標處理器的群組。 從 Windows 7 開始,KeSetTargetProcessorDpc 假設目標處理器屬於群組 0。 此行為可確保呼叫 KeSetTargetProcessorDpc 的現有驅動程式,且不使用任何群組導向功能,將會在具有兩個或多個群組的多處理器系統中正確執行。 不過,在 Windows 7 和更新版本中使用任何群組導向功能的驅動程式應該呼叫 KeSetTargetProcessorDpcEx,而不是 KeSetTargetProcessorDpc

呼叫 KeSetTargetProcessorDpcEx,在 DPC 物件已排入佇列之後發生,不會影響選取要執行之 DPC 例程的處理器。 若要控制目標處理器的選取範圍,必須先呼叫 KeSetTargetProcessorDpcEx 呼叫,才能呼叫排入 DPC 物件的 KeInsertQueueDpcIoRequestDpc

如需 DPC 佇列的詳細資訊,請參閱 DPC 佇列組織

要求

要求 價值
最低支援的用戶端 從 Windows 7 開始提供。
目標平臺 普遍
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何層級

另請參閱

IoRequestDpc

KDPC

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

PROCESSOR_NUMBER