Подтвердить что ты не робот

Почему GetCurrentProcess возвращает -1?

В этой небольшой программе, почему 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
4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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