winapi - marcas de tiempo de archivos sin sentido?
Pregunta
Parece que no puedo obtener una marca de tiempo confiable con las funciones de winapi. Por ejemplo:
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); }
no tiene sentido en todos mis archivos como:
test.txt 00:03:30 33/5/3
wDay parece tener valores fuera del rango 1-31 y las horas y fechas son totalmente erróneas. Todos los demás valores en BY_HANDLE_FILE_INFORMATION como nombre y tamaño son correctos, y en el código completo compruebo que no haya errores en todas las funciones, pero todos devolvieron el paso. Alguien sabe lo que estoy haciendo mal?
Solución
Creo que el problema es su uso de filesize.QuadPart
. Intente eliminarlo tanto de la cadena de formato como de la lista de argumentos, y vea si funciona.
Si eso ayuda, busque la cadena de formato correcta para usar con una cantidad de 64 bits en printf ()
.