winapi - бессмысленные временные метки файла? - PullRequest
0 голосов
/ 30 апреля 2009

Кажется, я не могу получить надежную временную метку, используя функции winapi. Например:

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

дает бессмысленный смысл для всех моих файлов, таких как:

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

wDay, кажется, имеет значения вне диапазона 1-31, а время и даты совершенно неверны. Все остальные значения в BY_HANDLE_FILE_INFORMATION, такие как имя и размер, являются правильными, и в полном коде я проверяю ошибки всех функций, но все они возвращаются. Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 30 апреля 2009

Я думаю, проблема в том, что вы используете filesize.QuadPart. Попробуйте удалить это как из строки формата, так и из списка аргументов, и посмотрите, работает ли это.

Если это поможет, тогда найдите правильную строку формата для использования в качестве 64-битного значения в printf().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...