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);