C++ Windows 7 x32上的几个Nt函数返回状态\u等待\u 0
我从微软网站下载了一个Windows7X32Enterprise(IE11)hyper-v映像,以测试一个研究项目 出于某种原因,我调用的所有Ntdll函数(syscall)都返回状态\u WAIT\u 0。我指的是我测试过的所有版本,包括RtlGetVersion、NtAllocateVirtualMemory、NtCreateFile等等 这可能是因为它是一个虚拟机吗?或者可能是因为我直接进行系统调用 请告知,我已经在非虚拟机(包括最新的Windows 10)下测试了我的项目,它运行良好,所以我怀疑它是我的代码 更新:C++ Windows 7 x32上的几个Nt函数返回状态\u等待\u 0,c++,c,windows,winapi,C++,C,Windows,Winapi,我从微软网站下载了一个Windows7X32Enterprise(IE11)hyper-v映像,以测试一个研究项目 出于某种原因,我调用的所有Ntdll函数(syscall)都返回状态\u WAIT\u 0。我指的是我测试过的所有版本,包括RtlGetVersion、NtAllocateVirtualMemory、NtCreateFile等等 这可能是因为它是一个虚拟机吗?或者可能是因为我直接进行系统调用 请告知,我已经在非虚拟机(包括最新的Windows 10)下测试了我的项目,它运行良好,所
STATUS\u WAIT\u 0可以被视为STATUS\u SUCCESS,因为它的值都是0。Ntdll函数基本上返回一个
NTSTATUS
,如、、等
以下文档包含NTSTATUS
值的常见用法详细信息
返回值/代码:
0x00000000
STATUS\u SUCCESS
/STATUS\u WAIT\u 0
说明:
操作已成功完成
调用者为WaitType指定了WaitAny,并且对象数组中的一个dispatcher对象已设置为信号状态。
状态\u等待\u 0==0==STATUS\u成功
@RbMm是这样定义的,但为什么?在某些操作系统上返回状态\u SUCCESS和状态\u WAIT\u 0毫无意义…奇怪的问题。OS返回二进制值-0。0是0。到处都是<代码>状态\u成功或状态\u等待\u 0
的sayS\u OK
或NOERROR
或false
-所有这些都只是对0的解释。@RbMm OK我理解,当然0是0。我只是不明白为什么在这个特定的操作系统上状态描述是status\u WAIT\u 0。老实说,我认为这是因为我直接进行系统调用。谢谢老实说,你还是不明白。api调用不返回字符串。它返回0。谁以及如何将0转换为字符串?这当然不是特定于操作系统的,也不是因为你直接进行系统调用。嗨,@Norbert Boros,如果这个答案对你有帮助,请随时为有相同问题的人标记它。