用户模式调度程序 (UMS) 返回 ERROR_NOT_SUPPORTED

Ali*_*her 3 64-bit winapi windows-10

我想使用 Windows用户模式调度程序 API,但我在互联网上找到的每个示例 C 或 C++ 都失败了。我总是得到 ERROR_NOT_SUPPORTED。

我的电脑在 x64 处理器中运行 Windows 10 Pro 64 位。我使用的是 VS2015,该应用程序是一个 x64 控制台应用程序。

值得注意的是,在我测试过的 4 个样本中,并非每次调用都失败

  1. 进入Ums调度模式
  2. 创建远程线程Ex

失败并显示 ERROR_NOT_SUPPORTED。这些是让事情顺利进行所必需的,但例如 CreateUmsCompletionList 或 GetUmsCompletionListEvent 则不然。

API 使用起来并不简单,但我很难相信它们都是错误的。

我已经调试了一些 EnterUmsSchedulingMode 内部发生的事情,似乎在 RtlpAttachThreadToUmsCompletionList 中调用 NtSetInformationThread 时出现问题,尽管我不太确定。

这是一个 ,这是我尝试过的另一个示例。

小智 5

如果您使用的是 Ivy Bridge 之前的处理器,UMS 将无法工作,因为在 x64 上创建 LDT 时存在潜在的安全问题。使用 Ivy Bridge 可以避免该问题,如果处理器无法访问 Ivy Bridge 功能,则 Windows 10(以及表面上的 Server 2016)更新只会禁用 UMS 功能。

更多信息在这里:http : //www.alex-ionescu.com/?p=340