KeRevertToUserAffinityThreadEx 函数 (wdm.h)
KeRevertToUserAffinityThreadEx 例程还原当前线程以前的关联。
语法
void KeRevertToUserAffinityThreadEx(
[in] KAFFINITY Affinity
);
参数
[in] Affinity
KAFFINITY类型变量,用于指定当前线程的新系统相关性。 将此参数设置为先前对 KeSetSystemAffinityThreadEx 例程的调用返回的值。
返回值
没有
言论
KeRevertToUserAffinityThreadEx 更改当前线程的相关性。 相关性值是一个掩码,用于标识线程可对其运行一组处理器。 如果成功,该例程会将线程计划在此集中的处理器上运行。
如果 地缘 值为非零值,KeRevertToUserAffinityThreadEx 将线程的关联掩码设置为 地缘 值。 如果 地缘 值为零,KeRevertToUserAffinityThreadEx 还原线程的原始用户关联掩码。 此原始用户关联掩码保存在 线程对象 上一次调用 KeSetSystemAffinityThreadEx。 对 KeRevertToUserAffinityThreadEx 的调用不起作用,除非调用 KeSetSystemAffinityThreadEx。
如果 地缘 值为非零值,则例程仅当以下两个值为 true 时,才会将当前线程的关联掩码更改为 Affinity 值:
- 相关性 值有效(即仅设置与逻辑处理器对应的掩码位)。
- 在 相关性 值中指定的至少一个处理器处于活动状态。
Windows 7 及更高版本的 Windows 支持处理器组。 旨在处理有关处理器组信息的驱动程序应使用 KeRevertToUserGroupAffinityThread 例程,该例程指定处理器组,而不是 KeRevertToUserAffinityThreadEx,后者不指定该例程。 但是,在 Windows 7 和更高版本中实现 KeRevertToUserAffinityThreadEx 为早期版本的 Windows 编写的驱动程序提供了兼容性,这些驱动程序不支持处理器组。 在此实现中,非零 地缘 值是一个地缘掩码,它指定一组 0 中可以运行线程的逻辑处理器。 如果 地缘 为零,线程将还原为其原始用户模式组号和地缘掩码。
如果在 IRQL <= APC_LEVEL 调用 KeRevertToUserAffinityThreadEx,并且调用成功,则新的(还原)关联掩码将立即生效。 调用返回时,调用线程已在新的关联掩码中指定的处理器上运行。 如果在 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) |