在这个小程序中,为什么GetCurrentProcess()
会返回-1?
int _tmain(int argc, _TCHAR* argv[]) {
HANDLE h = GetCurrentProcess(); // ret -1
printf("0x%x\n",(DWORD)h);
return 0;
}
怎么了?
在Kernel32.GetCurrentProcess
我看到了:
OR EAX,FFFFFFFF ; EAX - ?
RETN
答案 0 :(得分:25)
这是正确的,请参阅this API reference for GetCurrentProcess。
GetCurrentProcess
函数检索当前进程的伪句柄,当前进程定义为(HANDLE)-1
。但是,因为您不应该假设该值永远不会更改,所以提供GetCurrentProcess
函数作为将常量硬编码到代码中的替代方法。
答案 1 :(得分:8)
-1
是表示当前进程的伪句柄。这很正常。
答案 2 :(得分:4)
-1值没有任何问题。它将指示当前进程句柄。您可以参考this msdn page
中的备注部分