winapi - arquivo non-sense timestamps?
Pergunta
Eu não consigo obter um timestamp confiável usando funções winapi. Por exemplo:
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á non-sense em todos os meus arquivos como:
test.txt 00:03:30 33/5/3
wday parece ter valores fora da faixa de 1-31 e as horas e datas são totalmente errado. Todos os outros valores na BY_HANDLE_FILE_INFORMATION como o nome eo tamanho estão corretos e em I código completo I verificar se há erros de todas as funções, mas todos eles retornam passou. Alguém sabe o que estou fazendo de errado?
Solução
Eu acho que o problema é o uso de filesize.QuadPart
. Tente remover que tanto a cadeia de formato e a lista de argumentos, e ver se funciona.
Se isso ajuda, em seguida, procurar a cadeia de formato correto a ser usado para uma quantidade de 64 bits em printf()
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow