@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

NTFSの最終アクセス日時

NTFSでは最終アクセス日時の分解能が1時間となっています。これは、1時間以内の同種のアクセスについては最終アクセス時間を更新しないというパフォーマンス向上を目的としたものになります。最終アクセス日時の更新基準については、以下の記述が参考になります。

http://msdn.microsoft.com/ja-jp/library/cc429752.aspx
プラットフォーム SDK GetFileTime
lpLastAccessTime
1 個の 構造体へのポインタを指定します。関数から制御が返ると、この構造体に、最終アクセス日時が格納されます。最終アクセス日時は、最終書き込み日時、最終読み取り日時、最終実行日時(実行可能ファイルの場合)のいずれかに基づいて決定されます。この情報が不要な場合、NULL を指定します。

以前にプリフェッチ機能のところでも書いていますが、NTFS ではアクセス日時の分解能は1時間となっています。この為、1時間以内に同種のアクセスがあった場合にはディスク上のタイムスタンプが更新されません。ディスク上ではない、メモリ上のタイムスタンプは更新されていきますので、ディスクに記録されていないタイムスタンプは電源断により失われることになります。
例えば、ファイルのタイムスタンプを確認するツールを使ってアクセス日時を確認した場合、メモリ上に保持されている時間が表示されいて、ディスクにはそれより古い時間が記録されているケースでは、電源を切ってから稼働中に得た時間と、ファイルシステムが記録しているアクセス時間とのズレが発生するかもしれません。