質問

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の他の値はすべて正しく、完全なコードではすべての関数からのエラーをチェックしますが、すべてが返されます。誰かが私が間違っていることを知っていますか?

役に立ちましたか?

解決

問題は filesize.QuadPart の使用にあると思います。書式文字列と引数リストの両方から削除してみて、動作するかどうかを確認してください。

それが役立つ場合は、 printf()で64ビット量に使用する正しいフォーマット文字列を検索します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top