Windows API의 SetProcessDEPPolicy
함수의 주소를 (see my problem here and the first answer I got)으로 찾으려고합니다.HANDLE에서 HINSTANCE 로의 변환이 올바르지 않음 (커널 함수 주소 얻기)
:
C:\Documents and Settings\John\Desktop>c++ finddep.cpp -o finddep.exe finddep.cpp: In function 'int main(int, char**)': finddep.cpp:7:79: error: invalid conversion from 'HANDLE {aka void*}' to 'HINSTA NCE' [-fpermissive] FARPROC funcAddr = (FARPROC *) GetProcAddress(kernel32, "SetProcessDEPPolicy") ;
^
In file included from c:\mingw\include\windows.h:50:0,
from finddep.cpp:1: c:\mingw\include\winbase.h:1675:27: error: initializing argument 1 of 'int (__ attribute__((__stdcall__)) * GetProcAddress(HINSTANCE, LPCSTR))()' [-fpermissive ] WINBASEAPI FARPROC WINAPI GetProcAddress(HINSTANCE,LPCSTR);
^ finddep.cpp:7:79: error: cannot convert 'int (__attribute__((__stdcall__)) **)() ' to 'FARPROC {aka int (__attribute__((__stdcall__)) *)()}' in initialization FARPROC funcAddr = (FARPROC *) GetProcAddress(kernel32, "SetProcessDEPPolicy") ;
: 나는 7 줄에 다음과 같은 오류를 받고 있어요
#include <windows.h>
#include <iostream>
int main(int argc, char* argv[])
{
HANDLE kernel32 = GetModuleHandle("kernel32");
FARPROC* funcAddr = (FARPROC *) GetProcAddress(kernel32, "SetProcessDEPPolicy");
std::cout << "@ ";
}
을
Google에서이 문제를 해결하는 방법에 대한 아이디어가 없습니다.
(? 나는이 컴파일 일단, 어떻게 포인터에 주소를 인쇄 할 수 있습니다)
편집 : 주석에서 추가 사이클론의 제안, 점점 같은 오류가 Invalid conversion from HANDLE to HINSTANCE
'FARPROC * funcAddr = (FARPROC의 *) 그 지적에 대한' – Cyclonecode
@Cyclone 감사합니다,하지만 포인터로 선언함으로써 정확히 같은 오류가 발생합니다. 'HANDLE에서 HINSTANCE 로의 잘못된 대화 ' – Juicy
이 오류는 잘못된 매개 변수를'GetProcAddress()'에 전달함으로써 발생합니다. 확실히 한 번에 해당 함수를 호출 한 다음 두 번째 함수에서 'FARPROC *'로 변환하십시오. https://msdn.microsoft.com/en-us/library/windows/desktop/ms683199%28v=vs.85%29.aspx에서이 함수는'HANDLE '이 아닌'HMODULE'을 반환합니다. –