Bugfixing... Part 8/X:
- Actually, the files timestamp are already stored in the correct format on-disk... I should have listened to Thomas...

This fixes incorrect dates display when enumerating a directory contents. My apologies Thomas :-(.
Last to fix: the file size which is broken.

svn path=/trunk/; revision=64832
This commit is contained in:
Pierre Schweitzer 2014-10-19 19:48:52 +00:00
parent 211e68d9b1
commit 3b8b4734d6
3 changed files with 12 additions and 31 deletions

View file

@ -175,11 +175,10 @@ NtfsGetDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
ROUND_UP(sizeof(FILE_DIRECTORY_INFORMATION) + Length, sizeof(ULONG));
RtlCopyMemory(Info->FileName, FileName->Name, Length);
/* Convert file times */
NtfsDateTimeToFileTime(FileName->CreationTime, &Info->CreationTime);
NtfsDateTimeToFileTime(FileName->LastAccessTime, &Info->LastAccessTime);
NtfsDateTimeToFileTime(FileName->LastWriteTime, &Info->LastWriteTime);
NtfsDateTimeToFileTime(FileName->ChangeTime, &Info->ChangeTime);
Info->CreationTime.QuadPart = FileName->CreationTime;
Info->LastAccessTime.QuadPart = FileName->LastAccessTime;
Info->LastWriteTime.QuadPart = FileName->LastWriteTime;
Info->ChangeTime.QuadPart = FileName->ChangeTime;
/* Convert file flags */
NtfsFileFlagsToAttributes(FileName->FileAttributes, &Info->FileAttributes);
@ -217,11 +216,10 @@ NtfsGetFullDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
ROUND_UP(sizeof(FILE_FULL_DIRECTORY_INFORMATION) + Length, sizeof(ULONG));
RtlCopyMemory(Info->FileName, FileName->Name, Length);
/* Convert file times */
NtfsDateTimeToFileTime(FileName->CreationTime, &Info->CreationTime);
NtfsDateTimeToFileTime(FileName->LastAccessTime, &Info->LastAccessTime);
NtfsDateTimeToFileTime(FileName->LastWriteTime, &Info->LastWriteTime);
NtfsDateTimeToFileTime(FileName->ChangeTime, &Info->ChangeTime);
Info->CreationTime.QuadPart = FileName->CreationTime;
Info->LastAccessTime.QuadPart = FileName->LastAccessTime;
Info->LastWriteTime.QuadPart = FileName->LastWriteTime;
Info->ChangeTime.QuadPart = FileName->ChangeTime;
/* Convert file flags */
NtfsFileFlagsToAttributes(FileName->FileAttributes, &Info->FileAttributes);
@ -260,11 +258,10 @@ NtfsGetBothDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
ROUND_UP(sizeof(FILE_BOTH_DIR_INFORMATION) + Length, sizeof(ULONG));
RtlCopyMemory(Info->FileName, FileName->Name, Length);
/* Convert file times */
NtfsDateTimeToFileTime(FileName->CreationTime, &Info->CreationTime);
NtfsDateTimeToFileTime(FileName->LastAccessTime, &Info->LastAccessTime);
NtfsDateTimeToFileTime(FileName->LastWriteTime, &Info->LastWriteTime);
NtfsDateTimeToFileTime(FileName->ChangeTime, &Info->ChangeTime);
Info->CreationTime.QuadPart = FileName->CreationTime;
Info->LastAccessTime.QuadPart = FileName->LastAccessTime;
Info->LastWriteTime.QuadPart = FileName->LastWriteTime;
Info->ChangeTime.QuadPart = FileName->ChangeTime;
/* Convert file flags */
NtfsFileFlagsToAttributes(FileName->FileAttributes, &Info->FileAttributes);

View file

@ -97,18 +97,6 @@ NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject,
return IrpContext;
}
/* See:
-> http://msdn.microsoft.com/en-us/library/ms724228
-> http://bos.asmhackers.net/docs/filesystems/ntfs/standard.html#layout
*/
VOID
NtfsDateTimeToFileTime(ULONGLONG NtfsTime,
PLARGE_INTEGER SystemTime)
{
SystemTime->QuadPart = NtfsTime + 116444736000000000;
}
VOID
NtfsFileFlagsToAttributes(ULONG NtfsAttributes,
PULONG FileAttributes)

View file

@ -692,10 +692,6 @@ CdfsSwapString(PWCHAR Out,
ULONG Count);
#endif
VOID
NtfsDateTimeToFileTime(ULONGLONG NtfsTime,
PLARGE_INTEGER SystemTime);
VOID
NtfsFileFlagsToAttributes(ULONG NtfsAttributes,
PULONG FileAttributes);