원본 : http://www.debuglab.com/knowledge/searchpath.html
1.요약
특정한 파일의 위치를 찾아주는 SearchPath()의 리턴값을 분석하여 봅시다.
2.본문
"Win32 Programmer's Reference"에서 "SearchPath()"는 다음과 같은 reture value를 갖고 있습니다.
The length (in characters) of the string copied to the buffer.
-or-
0 if the function fails [see "GetLastError()" in the "Win32 Programmer's Reference" for more information].
하지만, 만약 찾고자 하는 파일을 찾을 수 없을때에도 0을 return 해주는데, 이때 GetLastError()로 error값을 살펴보아도 error값은 변경되어 있지 않다는 것을 알수 있습니다.
따라서 "file not found"와 그 밖의 에러들(out of memory, invalid parameter들과 같은..)을 리턴값으로 구분하는 것은 쉽지 않습니다.
따라서 프로그래머가 SearchPath()를 호출하기 전에 SetLastError()를 NO_ERROR로 셋팅해 주어서 나중에 값을 비교해 보아야 합니다.
SearchPath() 함수의 결과값을 분석해 보면 다음과 같습니다.
return value > buffer length buffer too small return value = 0 file not found or another error return value <= buffer length file found
다음 예제는 이 함수가 0을 리턴했을때 어떻게 값을 분석하는지를 보여주고 있습니다.
3.예제
TCHAR szFilename[] = "MyFile.Txt";
TCHAR szPathname[MAX_PATH];
LPTSTR lpszFilename;
SetLastError( NO_ERROR );
if( !SearchPath( NULL, szFilename, NULL, MAX_PATH, szPathname,
&lpszFilename ) )
{
if( GetLastError() == NO_ERROR )
Display( "File not found." );
else
Display( "SearchPath failed!" );
}
4.참고
MSDN - Knowledge base - Win32 Development
- 2001.08.13 Smile Seo -
- Break Pointer 는 INT 3 으로 통한다!! (0)2007/02/22
- 화면 캡쳐 소스 (0)2007/02/22
- SearchPath()의 리턴값 알아보기 (0)2007/02/22
- 파일의 특정 부분의 warning level을 지정하기 (0)2007/02/21
- 어셈블된 코드 보기 (0)2007/02/21

수안이의 컴퓨터 연구실



Leave your greetings.