WINAPI- 비시용 파일 타임 스탬프?
문제
Winapi 기능을 사용하여 신뢰할 수있는 타임 스탬프를 얻을 수없는 것 같습니다. 예를 들어:
int main(int argc, char *argv[]) { HANDLE file; BY_HANDLE_FILE_INFORMATION finfo; SYSTEMTIME systime; file = CreateFile("test.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); GetFileInformationByHandle(file,&finfo); FileTimeToSystemTime(&finfo.ftLastWriteTime, &systime); printf(" %s %02d:%02d:%02d %d/%d/%d\n", "test.txt", systime.wHour,systime.wMinute,systime.wSecond,systime.wDay,systime.wMonth,systime.wYear); }
내 모든 파일에 대해 다음과 같은 내용을 제공하지 않습니다.
test.txt 00:03:30 33/5/3
Wday는 범위 1-31 이외의 값을 가지고있는 것으로 보이며 시간과 날짜는 완전히 잘못되었습니다. BY_HANDLE_FILE_INFORMATION의 이름과 크기와 같은 다른 모든 값은 정확하며, 전체 코드에서는 모든 함수의 오류를 확인하지만 모두 통과되었습니다. 내가 뭘 잘못하고 있는지 아는 사람 있나요?
해결책
문제는 당신의 사용이라고 생각합니다 filesize.QuadPart
. 형식 문자열과 인수 목록에서이를 제거하고 그것이 작동하는지 확인하십시오.
도움이된다면 64 비트 수량에 사용할 올바른 형식 문자열을 찾으십시오. printf()
.
제휴하지 않습니다 StackOverflow