winapi - non-sense-Datei Zeitstempel?
Frage
Ich kann keine zuverlässigen Zeitstempel mit winapi Funktionen zu bekommen scheint. Zum Beispiel:
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); }
gibt Nicht-Sinn auf alle meine Dateien wie:
test.txt 00:03:30 33/5/3
wday scheint Werte außerhalb des Bereichs zu haben, 1-31 und die Zeiten und Daten sind völlig falsch. Alle anderen Werte in der BY_HANDLE_FILE_INFORMATION wie Name und Größe korrekt sind, und in I vollständigen Code I auf Fehler prüfen aus allen Funktionen, aber sie alle zurück übergeben. Wer weiß, was ich falsch mache?
Lösung
Ich denke, das Problem ist die Nutzung von filesize.QuadPart
. Versuchen Sie, dass das Entfernen sowohl aus dem Format-String und die Argumentliste, und sehen, ob es funktioniert.
Wenn das hilft, dann die richtige Format Zeichenkette sucht für eine in printf()
64-Bit-Menge zu verwenden.