본문 바로가기

Windows/_Windows Programming

GetLastError() 함수

Windows 시스템 함수를 호출하는 과정에서 오류가 발생하면

NULL을 리턴하지만 그 원인은 파악할수 없다.

원인을 파악하기 위해서는

시스템 함수뒤에 GetLastError 함수를 호출하여
 
그 함수의 오류에 해당하는 에러 코드를 리턴(정상일시 0 리턴)받아서

이를 MSDN 에서 참조해야 한다.

하지만 여기서 더 나아가

에러 코드를 해석해 문자열로 만들어주는 함수를 사용한다면 MSDN 을 참조하는 번거로움을 덜 수 있다.



예제 소스 :

1. 에러 코드 확인

_tprintf(_T("Error Code : %d\n"), GetLastError());


2. 에러 코드를 해석한 문자열 확인

#include <atlstr.h>

CString PrintErrorMessage(DWORD err)
{
       LPTSTR lpMsgBuf;
       CString msg;
       FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER   // 에러코드 해석 함수
                             | FORMAT_MESSAGE_FROM_SYSTEM
                             | FORMAT_MESSAGE_IGNORE_INSERTS,
                             NULL, err,
                             MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                             (LPTSTR)&lpMsgBuf, 0, NULL);
     msg = lpMsgBuf;
     LocalFree(lpMsgBuf);
     return msg;
}


사용법 : MessageBox(NULL, PrintErrorMessage(GetLastError()), "Error", MB_OK);

'Windows > _Windows Programming' 카테고리의 다른 글

구조적 예외처리(SEH)  (0) 2010.03.08
Mstsc(원격) 사용하기  (4) 2010.02.06
리소스(Resource)  (0) 2009.12.24
윈도우 프로그램 기본 틀  (0) 2009.12.23
윈도우 관리 메시지  (0) 2009.12.23