Почему GetCurrentProcess возвращает -1? - PullRequest
22 голосов
/ 28 апреля 2011

В этой маленькой программе почему 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 ]

25 голосов
/ 28 апреля 2011

Это верно, см. эту ссылку API для GetCurrentProcess .

Функция GetCurrentProcess извлекает псевдо-дескриптор для текущего процесса, который в настоящее время определен как (HANDLE)-1. Однако, поскольку вы не должны предполагать, что значение никогда не изменится, функция GetCurrentProcess предоставляется в качестве альтернативы жесткому кодированию константы в вашем коде.

8 голосов
/ 28 апреля 2011

-1 - псевдо-дескриптор, представляющий текущий процесс. Это нормально.

4 голосов
/ 28 апреля 2011

Нет ничего плохого в значении -1. Это будет указывать текущий дескриптор процесса. Вы можете обратиться к разделу замечаний в этой странице MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...