블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

공지사항

최근에 올라온 글

증상 : 64비트윈도우에서, GetProcAddress로 호출한 함수 오동작 및, 디버깅중 종료가 안되는 문제

        작업관리자에서 강제종료도 안됨


원인 : GetProcAddress의 리턴값을 포인터로 다시 변환하여 발생.

        멈추는 문제는 다른것이 원인인듯.


잘못된 코드

typedef BOOL(WINAPI *FUNC_RegisterTouchWindow)(HWND hwnd,ULONG ulFlags);

BOOL RegisterTouchWindow(HWND hwnd,ULONG ulFlags)

{

BOOL ret=0;FUNC_RegisterTouchWindow *f;

f=(FUNC_RegisterTouchWindow*)User32_DLL_GetProcAddress("RegisterTouchWindow");

if(f)

{

ret=(*f)(hwnd,ulFlags);  <<=== 여기서 바로 리턴됨. 에러. 종료안됨. 잘못된 호출

}

else

{

printf(_T("ERR RegisterTouchWindow"));

}

return ret;



올바른 코드

typedef BOOL(WINAPI *FUNC_RegisterTouchWindow)(HWND hwnd,ULONG ulFlags);

BOOL RegisterTouchWindow(HWND hwnd,ULONG ulFlags)

{

BOOL ret=0;FUNC_RegisterTouchWindow f;

f=(FUNC_RegisterTouchWindow)User32_DLL_GetProcAddress("RegisterTouchWindow");

if(f)

{

ret=f(hwnd,ulFlags);

}

else

{

printf(_T("ERR RegisterTouchWindow"));

}

return ret;



어쩌다 한번씩 GetProcAddress를 사용하다보니, 실수함.

Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함