Почему 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
Ответы
Ответ 1
Это верно, см. эту ссылку API для GetCurrentProcess.
Функция GetCurrentProcess
извлекает псевдо-дескриптор текущего процесса, который в настоящее время определяется как (HANDLE)-1
. Однако, поскольку вы не должны предполагать, что значение никогда не изменится, функция GetCurrentProcess
предоставляется в качестве альтернативы жесткому кодированию константы в ваш код.
Ответ 2
-1
- псевдо-дескриптор, представляющий текущий процесс. Это нормально.
Ответ 3
Нет ничего плохого в значении -1. Он будет указывать текущий дескриптор процесса. Вы можете обратиться к разделу замечаний в этой странице msdn