API

파일 사이즈 64비트로 구하는 함수

디버그정 2008. 7. 26. 01:47

// 에러시 0xFFFFFFFFFFFFFFFF 리턴
unsigned __int64 GetBigSize(HANDLE hFile)
{
 if(hFile==0) return 0xFFFFFFFFFFFFFFFF; // 기본적 에러검사

 DWORD dwSizeHigh, dwSizeLow;
 dwSizeLow=GetFileSize(hFile, &dwSizeHigh);
 
 // 1. GetFileSize 함수가 실패할 경우
 if(dwSizeLow == 0xFFFFFFFF  &&  GetLastError() != NO_ERROR)
  return 0xFFFFFFFFFFFFFFFF;

 // 2. 하이사이즈가 존재할 경우
 if(dwSizeHigh)
  return ((unsigned __int64)dwSizeHigh<<32)+(unsigned __int64)dwSizeLow;
 
 // 3. 하이사이즈가 존재하지 않는 경우
 return (unsigned __int64)dwSizeLow;
}