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?

Foi útil?

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
scroll top