-
MFC CloseHandle 0xC0000008: An invalid handle was specified개발 2022. 8. 11. 17:20반응형
다른 사람이 만들어 놓은 소스 디버그 모드로 실행하는데
갑자기 0xC0000008: An invalid handle was specified Exception이 떨어진다
뭐지 하고 GetLastError()도 살펴보는데
183(0xB7) : ERROR_ALREADY_EXISTS - 파일이 이미 있으므로 파일을 만들 수 없습니다.
이건 Exception 날일은 아닌거 같은데 다른 원인을 찾아봤더니 CloseHandle 사용이 문제 였다
WIN32_FIND_DATA data;
HANDLE hDir = FindFirstFile("Result", &data);이렇게 FindFirstFile 사용한 경우에는 Closehandle 대신 FindClose 사용해서 닫아 줘야 한다
handle 값을 보통 CloseHandle로 처리하니 관성적으로 그렇게 코딩한 것이다
사실 Release 모드에서는 이상 없이 동작한다 하지만, 디버깅 중에 발생한걸
그냥 넘어가기에는 매우 찜찜하니 해결 가능한 것은 끝까지 정상적으로 처리하도록 하자
CloseHandle MSDN 에 Return Value 섹션에 보면 아래와 같이 쓰여 있다
If the application is running under a debugger, the function will throw an exception if it receives either a handle value that is not valid or a pseudo-handle value. This can happen if you close a handle twice, or if you call CloseHandle on a handle returned by the FindFirstFile function instead of calling the FindClose function.
CloseHandle function (handleapi.h) - Win32 apps | Microsoft Docs
CloseHandle function (handleapi.h) - Win32 apps
Closes an open object handle.
docs.microsoft.com
반응형'개발' 카테고리의 다른 글
[MFC] 현재 실행파일 이름 , 경로 얻어오기 - GetModuleFileName, PathFindFileName, PathRemoveExtension (0) 2022.09.02 [MFC] CreateProcess() 핸들 누수 수정 : C6335 leaking process information handle (0) 2022.08.12 [C#] BCD타입이란? 문자열 BCD 변환하기 코드 예제 (0) 2022.03.31 윈도우10 로지텍 페블 블루투스 마우스 끊김 현상 해결 - 마우스 설정 변경 (0) 2021.07.27 윈도우10 블루투스 마우스 끊김 현상 해결 - 전원관리 (0) 2021.01.12