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。 否則,它會傳回下列內容:
傳回碼 | 描述 |
---|---|
|
ProcNumber 參數指向無效的處理器編號。 |
言論
多處理器系統中的每個處理器都有自己的 DPC 佇列。 KeSetTargetProcessorDpcEx 指定當驅動程式呼叫 KeInsertQueueDpc 或 IoRequestDpc 例程將 DPC 排入佇列時,系統應該使用的處理器佇列。
KeSetTargetProcessorDpcEx 可以為一般 DPC 和 線程的 DPC指定目標處理器。 即使是高優先順序線程,一般 DPC 也無法先佔,但線程 DPC 可由具有足夠高優先順序的時關鍵線程先佔。
KeSetTargetProcessorDpc相關的例程會指定 DPC 的目標處理器,但此例程與 KeSetTargetProcessorDpcEx不同,不會指定目標處理器的群組。 從 Windows 7 開始,KeSetTargetProcessorDpc 假設目標處理器屬於群組 0。 此行為可確保呼叫 KeSetTargetProcessorDpc 的現有驅動程式,且不使用任何群組導向功能,將會在具有兩個或多個群組的多處理器系統中正確執行。 不過,在 Windows 7 和更新版本中使用任何群組導向功能的驅動程式應該呼叫 KeSetTargetProcessorDpcEx,而不是 KeSetTargetProcessorDpc。
呼叫 KeSetTargetProcessorDpcEx,在 DPC 物件已排入佇列之後發生,不會影響選取要執行之 DPC 例程的處理器。 若要控制目標處理器的選取範圍,必須先呼叫 KeSetTargetProcessorDpcEx 呼叫,才能呼叫排入 DPC 物件的 KeInsertQueueDpc 或 IoRequestDpc。
如需 DPC 佇列的詳細資訊,請參閱 DPC 佇列組織。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 7 開始提供。 |
目標平臺 | 普遍 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何層級 |