Domanda

Non riesco a ottenere un timestamp affidabile usando le funzioni di Winapi. Ad esempio:

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

dà un senso a tutti i miei file come:

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

wDay sembra avere valori al di fuori dell'intervallo 1-31 e gli orari e le date sono totalmente sbagliati. Tutti gli altri valori in BY_HANDLE_FILE_INFORMATION come nome e dimensione sono corretti, e nel codice completo controllo gli errori di tutte le funzioni, ma tutti restituiscono. Qualcuno sa cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Penso che il problema sia l'uso di filesize.QuadPart . Prova a rimuoverlo sia dalla stringa di formato che dall'elenco degli argomenti e verifica se funziona.

Se questo aiuta, cerca la stringa di formato corretta da utilizzare per una quantità a 64 bit in printf () .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top