DEV&OPS/C & C++
windows 시스템 함수 호출 오류시 오류코드 획득
ALEPH.GEM
2021. 9. 7. 18:11
GetLastError()
윈도우즈 시스템 함수들은 에러가 났을 때 리턴 값이 대개 NULL 이기 때문에 에러 원인을 알 수 없습니다.
이럴 때 사용하는 함수가 GetLastError 함수를 사용하면 에러코드를 획득할 수 있습니다.
이 에러코드는 MSDN을 참고하면 무슨 에러인지 알 수 있게 됩니다.
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
int _tmain(void)
{
HANDLE hFile = CreateFile(_T("TEST.DAT"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
_tprintf( _T("error code: %d \n"), GetLastError() );
return 0;
}
return 0;
}
빌드 후 실행하게 되면 error code : 2 가 출력됩니다.
이 에러코드의 뜻은 파일이 존재하지 않는다는 뜻입니다.
존재하지 않은 파일을 CreateFile()에서 인수로 전달했기 때문입니다.
오류 확인은 오류가 발생한 직후에 해야 합니다.
GetLastError() 함수는 말그대로 가장 최근 발생한 에러코드를 리턴하기 때문입니다.
728x90