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。 否則,它會傳回下列專案:
傳回碼 | Description |
---|---|
|
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 例程選取沒有作用。 若要控制目標處理器的選取範圍,必須在呼叫 KeInsertQueueDpc 或 IoRequestDpc 佇列 DPC 物件之前發生 KeSetTargetProcessorDpcEx 呼叫。
如需 DPC 佇列的詳細資訊,請參閱 DPC 佇列的組織。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 7 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | 任何層級 |