From: Pierre Schweitzer Date: Tue, 4 Nov 2014 07:52:14 +0000 (+0000) Subject: [NTFS] X-Git-Tag: backups/tcpip_revolution@71025~102 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=217a0305198e7180ffc890a3732268d4bdccc1f2;hp=ef9b3e68e3b9ec61ddae6a1fe9605a5a2e02d034 [NTFS] Try to read the names from the biggest name space to the smallest. Only at the end assert we have to have a name. This fixes name enumeration on Windows 7 NTFS volumes. svn path=/trunk/; revision=65239 --- diff --git a/reactos/drivers/filesystems/ntfs/dirctl.c b/reactos/drivers/filesystems/ntfs/dirctl.c index 486daa35f06..088b69fe6ef 100644 --- a/reactos/drivers/filesystems/ntfs/dirctl.c +++ b/reactos/drivers/filesystems/ntfs/dirctl.c @@ -137,7 +137,15 @@ NtfsGetNameInformation(PDEVICE_EXTENSION DeviceExt, DPRINT("NtfsGetNameInformation() called\n"); - FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32); + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX); + if (FileName == NULL) + { + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32); + if (FileName == NULL) + { + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS); + } + } ASSERT(FileName != NULL); Length = FileName->NameLength * sizeof (WCHAR); @@ -165,7 +173,15 @@ NtfsGetDirectoryInformation(PDEVICE_EXTENSION DeviceExt, DPRINT("NtfsGetDirectoryInformation() called\n"); - FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32); + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX); + if (FileName == NULL) + { + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32); + if (FileName == NULL) + { + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS); + } + } ASSERT(FileName != NULL); Length = FileName->NameLength * sizeof (WCHAR); @@ -206,7 +222,15 @@ NtfsGetFullDirectoryInformation(PDEVICE_EXTENSION DeviceExt, DPRINT("NtfsGetFullDirectoryInformation() called\n"); - FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32); + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX); + if (FileName == NULL) + { + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32); + if (FileName == NULL) + { + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS); + } + } ASSERT(FileName != NULL); Length = FileName->NameLength * sizeof (WCHAR); @@ -248,7 +272,15 @@ NtfsGetBothDirectoryInformation(PDEVICE_EXTENSION DeviceExt, DPRINT("NtfsGetBothDirectoryInformation() called\n"); - FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32); + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX); + if (FileName == NULL) + { + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32); + if (FileName == NULL) + { + FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS); + } + } ASSERT(FileName != NULL); ShortFileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);