MFC
-
[MFC] 현재 실행파일 이름 , 경로 얻어오기 - GetModuleFileName, PathFindFileName, PathRemoveExtension개발 2022. 9. 2. 16:27
여러 버전으로 실행 파일 릴리즈 하고 파일 이름을 다르게 했다고 하더라도 실행하고 나서는 사용자가 어떤 파일을 실행했는지 혼동이 될 수도 있다 그래서 매번 실행 프로그램 타이틀을 변경할 수 없으니 실행파일 이름을 얻어와서 프로그램 타이틀을 변경해주면 문제 생겼을 때 버전 확인이나 로그 요청할 때도 조금은 이야기 하기가 수월하다 GetModuleFileName() : 현재 실행 파일의 전체 경로까지 얻어온다 PathFindFileName() : 전체 경로에서 확장자를 포함한 파일 이름을 얻어온다 PathRemoveExtension() : 확장자를 제외한 결과를 돌려준다 TCHAR szExeFileNameFull[MAX_PATH]; GetModuleFileName(nullptr, szExeFileNameFu..
-
[MFC] CreateProcess() 핸들 누수 수정 : C6335 leaking process information handle개발 2022. 8. 12. 13:55
MFC C6335 leaking process information handle 메시지 처리하기 다른 사람 소스 가지고 작업 중에 해당 메시지가 발생했다 이 역시도 릴리즈 모드에서는 큰 영향은 없지만, 옛날 부터 MFC는 메모리 Leak 에 민감했던지라 해결해야 겠다 싶었다 코드를 찬찬히 살펴보니 CreateProcess() 에서 반환된 프로세스 핸들 값을 closehandle 해주지 않았을 경우에 발생한다 CreateProcess function 마지막 파라미터로 반환되는 PROCESS_INFORMATION 에는 새로 생성되는 process의 process handle 과 main thread handle 값이 들어 있다 해당 프로세스를 더 이상 사용하지 않을 경웨는 process와 thread han..
-
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 값을 보통 CloseH..