문제

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().

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top