void KeSetAffinityThread(PKTHREAD pKThread, KAFFINITY cpuAffinityMask)
例程在 Windows 内核中可用,其文档可以在 OS/2 内核文档中找到。而且 Windows 仍然在其内核中保留了这个 API。此 API 可用于设置任何线程的关联掩码。当系统中有超过 64 个处理器时,我正在寻找方法来执行此操作。
小背景 - 随着 Windows 7 中处理器组功能的引入,我们不能再安全地依赖 KAFFINITY,因此我不能使用上述 API,因为代码在超过 64 个处理器的系统上运行时将不可靠。我无法在 MSDN 中找到合适的替代品,MSDN 提供的 API 包括KeSetSystemAffinityThread
,KeSetSystemGroupAffinityThread
但它不符合我的目的,因为这些调用仅用于设置调用线程的亲和力。
我还看到了一个函数 -SetThreadAffinityMask()
设置任意线程的亲和力,但这是一个用户级例程。我正在内核模式下寻找类似的东西。