为什么GetCurrentProcess返回-1 ?

Why does GetCurrentProcess return -1?

本文关键字:返回 GetCurrentProcess 为什么      更新时间:2023-10-16

在这个小程序中,为什么GetCurrentProcess()返回-1?

int _tmain(int argc, _TCHAR* argv[]) {
    HANDLE h = GetCurrentProcess(); // ret -1 
    printf("0x%xn",(DWORD)h); 
    return 0;
}

怎么了?

Kernel32.GetCurrentProcess中,我看到如下:

OR EAX,FFFFFFFF  ; EAX - ?
RETN

正确,参见GetCurrentProcess的API参考。

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

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

-1值没有问题。它将指示当前进程句柄。您可以参考此msdn页面

中的注释部分。