为什么GetCurrentProcess返回-1?

Kmd*_*Kmd 22 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;
}
Run Code Online (Sandbox Code Playgroud)

怎么了?

Kernel32.GetCurrentProcess我看来:

OR EAX,FFFFFFFF  ; EAX - ?
RETN
Run Code Online (Sandbox Code Playgroud)

Ski*_*izz 25

这是正确的,请参阅此GetCurrentProcess的API参考.

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


use*_*016 8

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