From a91d0a5297cb0251a807fb3d6bcdc1edebfc3a79 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 8 Dec 2014 19:19:30 +0000 Subject: [PATCH] [NTFS] Implement GetStandardInformationFromRecord() which will return $STANDARD_INFORMATION attribute from a file record svn path=/trunk/; revision=65591 --- reactos/drivers/filesystems/ntfs/attrib.c | 22 ++++++++++++++++++++++ reactos/drivers/filesystems/ntfs/ntfs.h | 3 +++ 2 files changed, 25 insertions(+) diff --git a/reactos/drivers/filesystems/ntfs/attrib.c b/reactos/drivers/filesystems/ntfs/attrib.c index c5fcf18166b..793ca291a5f 100644 --- a/reactos/drivers/filesystems/ntfs/attrib.c +++ b/reactos/drivers/filesystems/ntfs/attrib.c @@ -330,6 +330,28 @@ GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType) return NULL; } +PSTANDARD_INFORMATION +GetStandardInformationFromRecord(PFILE_RECORD_HEADER FileRecord) +{ + PNTFS_ATTR_RECORD Attribute; + PSTANDARD_INFORMATION StdInfo; + + Attribute = (PNTFS_ATTR_RECORD)((ULONG_PTR)FileRecord + FileRecord->AttributeOffset); + while (Attribute < (PNTFS_ATTR_RECORD)((ULONG_PTR)FileRecord + FileRecord->BytesInUse) && + Attribute->Type != AttributeEnd) + { + if (Attribute->Type == AttributeStandardInformation) + { + StdInfo = (PSTANDARD_INFORMATION)((ULONG_PTR)Attribute + Attribute->Resident.ValueOffset); + return StdInfo; + } + + Attribute = (PNTFS_ATTR_RECORD)((ULONG_PTR)Attribute + Attribute->Length); + } + + return NULL; +} + PFILENAME_ATTRIBUTE GetBestFileNameFromRecord(PFILE_RECORD_HEADER FileRecord) { diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index dbe6551e305..8af68849c84 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -465,6 +465,9 @@ DecodeRun(PUCHAR DataRun, VOID NtfsDumpFileAttributes(PFILE_RECORD_HEADER FileRecord); +PSTANDARD_INFORMATION +GetStandardInformationFromRecord(PFILE_RECORD_HEADER FileRecord); + PFILENAME_ATTRIBUTE GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType);