为什么GetCurrentProcess返回-1?

时间:2011-04-28 11:54:30

标签: c++ c windows winapi

在这个小程序中,为什么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

3 个答案:

答案 0 :(得分:25)

这是正确的,请参阅this API reference for GetCurrentProcess

  

GetCurrentProcess函数检索当前进程的伪句柄,当前进程定义为(HANDLE)-1。但是,因为您不应该假设该值永远不会更改,所以提供GetCurrentProcess函数作为将常量硬编码到代码中的替代方法。

答案 1 :(得分:8)

-1是表示当前进程的伪句柄。这很正常。

答案 2 :(得分:4)

-1值没有任何问题。它将指示当前进程句柄。您可以参考this msdn page

中的备注部分
相关问题