WINAPI - عدم الشعور الطوابع الزمنية الملف؟
سؤال
وأنا لا يمكن أن يبدو للحصول على طابع زمني موثوق باستخدام وظائف 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()
.
لا تنتمي إلى StackOverflow