سؤال

وأنا لا يمكن أن يبدو للحصول على طابع زمني موثوق باستخدام وظائف 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 تحقق من وجود أخطاء من جميع وظائف، لكنهم جميعا عودة مرت. أحد يعرف ما أقوم به خطأ؟

هل كانت مفيدة؟

المحلول

وأعتقد أن المشكلة هي استخدامك لfilesize.QuadPart. حاول إزالة ذلك من كل سلسلة التنسيق والقائمة حجة، ومعرفة ما اذا كان يعمل.

إذا أن يساعد، ثم البحث عن سلسلة التنسيق الصحيحة لاستخدام كمية 64-بت في printf().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top