winapi - 非感知文件时间戳?

时间:2009-04-30 00:17:07

标签: winapi file timestamp

我似乎无法使用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中的所有其他值(如名称和大小)都是正确的,在I完整代码中,我检查所有函数的错误,但它们都返回通过。谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为问题在于您使用filesize.QuadPart。尝试从格式字符串和参数列表中删除它,看看它是否有效。

如果有帮助,请在printf()中查找用于64位数量的正确格式字符串。