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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top