共用方式為


KeRevertToUserAffinityThreadEx 函式 (wdm.h)

KeRevertToUserAffinityThreadEx 例程會還原目前線程的先前親和性。

語法

void KeRevertToUserAffinityThreadEx(
  [in] KAFFINITY Affinity
);

參數

[in] Affinity

KAFFINITY型別變數,指定目前線程的新系統親和性。 將此參數設定為先前呼叫 keSetSystemAffinityThreadEx 例程所傳回的值。

傳回值

沒有

言論

KeRevertToUserAffinityThreadEx 變更目前線程的親和性。 親和性值是一個遮罩,可識別線程可執行的一組處理器。 如果成功,例程會將線程排程在此集合中的處理器上執行。

如果 Affinity 值為非零值,KeRevertToUserAffinityThreadEx 會將線程的 affinity mask 設定為 Affinity 值。 如果 Affinity 值為零,KeRevertToUserAffinityThreadEx 還原線程的原始使用者親和性遮罩。 先前呼叫 KeSetSystemAffinityThreadEx ,此原始使用者親和性遮罩已儲存在線程物件中。 呼叫 KeRevertToUserAffinityThreadEx 沒有任何作用,除非在呼叫 keSetSystemAffinityThreadEx 之前。

如果 Affinity 值為非零值,則例程只會將目前線程的 affinity mask 變更為 Affinity 值,前提是下列兩者都成立:

  • Affinity 值有效(也就是說,只會設定對應至邏輯處理器的遮罩位)。
  • Affinity 值中指定的至少一個處理器為使用中。
如果不符合上述任一條件,則呼叫 KeRevertToUserAffinityThreadEx 沒有任何作用。

Windows 7 和更新版本的 Windows 支援處理器群組。 設計來處理處理器群組相關信息的驅動程式應該使用 KeRevertToUserGroupAffinityThread 例程,指定處理器群組,而不是 KeRevertToUserAffinityThreadEx,但不會。 不過,KeRevertToUserAffinityThreadEx 的實作, Windows 7 和更新版本中的 Windows 提供針對舊版 Windows 所撰寫之驅動程式的兼容性,不支持處理器群組。 在此實作中,非零 Affinity 值是一種親和性遮罩,指定線程可執行之群組 0 中的一組邏輯處理器。 如果 Affinity 為零,線程會還原為其原始的使用者模式群組編號和 affinity mask。

如果在 IRQL <= APC_LEVEL 呼叫 KeRevertToUserAffinityThreadEx,則新的 (reverted) 親和性遮罩會立即生效。 當呼叫傳回時,呼叫線程已經在新同質遮罩中指定的處理器上執行。 如果在 IRQL = DISPATCH_LEVEL呼叫 KeRevertToUserAffinityThreadEx,且呼叫成功,則擱置處理器變更會延遲到呼叫者降低低於 DISPATCH_LEVEL 的 IRQL 為止。

要求

要求 價值
最低支援的用戶端 適用於 Windows Vista 和更新版本的 Windows。
目標平臺 普遍
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (請參閱一節)。
DDI 合規性規則 HwStorPortProhibitedDIs(storport)PowerIrpDDis(wdm)

另請參閱

KAFFINITY

KeRevertToUserGroupAffinityThread

KeSetSystemAffinityThreadEx