Question

Je n'arrive pas à obtenir un horodatage fiable avec les fonctions Winapi. Par exemple:

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);
}

donne un sens à tous mes fichiers comme:

test.txt   00:03:30 33/5/3

wDay semble avoir des valeurs en dehors de la plage 1-31 et les heures et les dates sont totalement fausses. Toutes les autres valeurs de BY_HANDLE_FILE_INFORMATION, telles que le nom et la taille, sont correctes et, dans le code complet, je vérifie les erreurs de toutes les fonctions, mais elles retournent toutes correctement. Quelqu'un sait ce que je fais mal?

Était-ce utile?

La solution

Je pense que le problème est votre utilisation de filesize.QuadPart . Essayez de supprimer cela de la chaîne de format et de la liste des arguments, et voyez si cela fonctionne.

Si cela vous aide, recherchez la chaîne de format appropriée à utiliser pour une quantité de 64 bits dans printf () .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top