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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top