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