KeRevertToUserAffinityThreadEx 函数 (wdm.h)

KeRevertToUserAffinityThreadEx 例程还原当前线程以前的相关性。

语法

void KeRevertToUserAffinityThreadEx(
  [in] KAFFINITY Affinity
);

参数

[in] Affinity

KAFFINITY 类型的变量,用于指定当前线程的新系统相关性。 将此参数设置为先前调用 KeSetSystemAffinityThreadEx 例程返回的值。

返回值

备注

KeRevertToUserAffinityThreadEx 更改当前线程的相关性。 相关性值是一个掩码,用于标识线程可在其上运行的一组处理器。 如果成功,例程将线程计划在此集中的处理器上运行。

如果 Affinity 值为非零值, 则 KeRevertToUserAffinityThreadEx 会将线程的相关性掩码设置为 Affinity 值。 如果 Affinity 值为零, KeRevertToUserAffinityThreadEx 将还原线程的原始用户关联掩码。 此原始用户关联掩码是通过先前调用 KeSetSystemAffinityThreadEx 保存在线程对象中。 除非调用 KeSetSystemAffinityThreadEx 之前调用 KeSetSystemAffinityThreadEx ,否则调用 KeRevertToUserAffinityThreadEx 不起作用。

如果 Affinity 值为非零值,则例程仅当以下两项都为 true 时,才会将当前线程的关联掩码更改为 Affinity 值:

  • Affinity 值是有效的 (也就是说,) 仅设置与逻辑处理器对应的掩码位。
  • 在 Affinity 值中指定的至少一个处理器处于活动状态。
如果不满足上述任一条件,则对 KeRevertToUserAffinityThreadEx 的调用不起作用。

Windows 7 及更高版本的 Windows 支持处理器组。 设计为处理处理器组相关信息的驱动程序应使用 KeRevertToUserGroupAffinityThread 例程(指定处理器组),而不是 KeRevertToUserAffinityThreadEx,后者不指定。 但是,Windows 7 及更高版本中 KeRevertToUserAffinityThreadEx 的实现为不支持处理器组的早期 Windows 版本编写的驱动程序提供兼容性。 在此实现中,非零 相关性 值是一个关联掩码,用于指定线程可在其上运行的组 0 中的一组逻辑处理器。 如果 Affinity 为零,则线程将还原到其原始用户模式组编号和相关性掩码。

如果在 IRQL <= APC_LEVEL调用 KeRevertToUserAffinityThreadEx,并且调用成功,则) 关联掩码恢复的新 (将立即生效。 当调用返回时,调用线程已在新的关联掩码中指定的处理器上运行。 如果在 IRQL = DISPATCH_LEVEL调用 KeRevertToUserAffinityThreadEx 并且调用成功,则挂起的处理器更改将推迟到调用方将 IRQL 降低到DISPATCH_LEVEL以下。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 中可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (请参阅备注部分) 。
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

KAFFINITY

KeRevertToUserGroupAffinityThread

KeSetSystemAffinityThreadEx