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 值中指定的至少一个处理器处于活动状态。
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) |