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

时间:2016-01-21 01:26:25

标签: winapi 64-bit windows-10

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

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

值得注意的是,在我测试过的4个样本中,并非所有呼叫都失败了

  1. EnterUmsSchedulingMode
  2. CreateRemoteThreadEx
  3. ERROR_NOT_SUPPORTED失败。这些是必要的,但是例如CreateUmsCompletionList或GetUmsCompletionListEvent不会。

    使用API​​并非易事,但我很难相信所有这些都是错误的。

    我调试了一下EnterUmsSchedulingMode内部发生的事情,看来在RtlpAttachThreadToUmsCompletionList中调用NtSetInformationThread时出现问题,虽然我不太确定。

    以下是one,此处是我尝试过的another个样本。

1 个答案:

答案 0 :(得分:3)

如果您使用的是常春藤网桥处理器,由于在x64上创建LDT的潜在安全问题,UMS将无法正常工作。如果处理器无法访问Ivy Bridge功能,Ivy Bridge和Windows 10(以及表面上的Server 2016)更新只会禁用UMS功能,可以避免此问题。

此处有更多信息:http://www.alex-ionescu.com/?p=340