【发布时间】:2020-01-10 19:20:24
【问题描述】:
我从 Microsoft 网站下载了一个 Windows 7 x32 Enterprise (IE11) hyper-v 映像来测试一个研究项目。
由于某种原因,我调用(系统调用)的所有 Ntdll 函数都返回 STATUS_WAIT_0。我的意思是我测试过的所有这些,包括 RtlGetVersion、NtAllocateVirtualMemory、NtCreateFile 等等。
这可能是因为它是虚拟机吗?还是因为我直接进行系统调用?
请告知,我已经在包括最新 Windows 10 在内的非虚拟机下测试了我的项目,它工作正常,所以我怀疑这是我的代码。
更新:
STATUS_WAIT_0 可以认为是 STATUS_SUCCESS,因为它的值都是 0。
【问题讨论】:
-
STATUS_WAIT_0 == 0 == STATUS_SUCCESS -
@RbMm 是的,这就是它的定义方式,但为什么呢?在某些操作系统上返回 STATUS_SUCCESS 和在某些 STATUS_WAIT_0 上没有意义...
-
奇怪的问题。操作系统返回二进制值 - 0。0 是 0。无处不在。
STATUS_SUCCESS或STATUS_WAIT_0或S_OK或NOERROR或false- 都只是 0 的解释。 -
@RbMm 好的,我明白了,当然 0 是 0。我只是很困惑为什么在这个特定的操作系统上状态描述是 STATUS_WAIT_0。老实说,我认为这是因为我直接进行系统调用。谢谢!
-
老实说你还是不明白。 api 调用不返回字符串。它返回 0。谁以及如何将 0 转换为字符串?这当然不是特定于操作系统的,也不是因为您直接进行系统调用