Author: pschweitzer
Date: Sun Jun 28 21:26:19 2015
New Revision: 68310
URL:
http://svn.reactos.org/svn/reactos?rev=68310&view=rev
Log:
[NTFS]
Simplify the implementation of NtfsGetFileSize()
Modified:
trunk/reactos/drivers/filesystems/ntfs/dirctl.c
Modified: trunk/reactos/drivers/filesystems/ntfs/dirctl.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/ntfs/d…
==============================================================================
--- trunk/reactos/drivers/filesystems/ntfs/dirctl.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/ntfs/dirctl.c [iso-8859-1] Sun Jun 28 21:26:19 2015
@@ -36,24 +36,20 @@
static ULONGLONG
-NtfsGetFileSize(PFILE_RECORD_HEADER FileRecord,
+NtfsGetFileSize(PDEVICE_EXTENSION DeviceExt,
+ PFILE_RECORD_HEADER FileRecord,
PFILENAME_ATTRIBUTE FileName)
{
ULONGLONG Size;
- PNTFS_ATTR_RECORD Attribute;
+ NTSTATUS Status;
+ PNTFS_ATTR_CONTEXT DataContext;
Size = FileName->AllocatedSize;
- 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 == AttributeData && Attribute->NameLength ==
0)
- {
- Size = AttributeDataLength(Attribute);
- break;
- }
-
- Attribute = (PNTFS_ATTR_RECORD)((ULONG_PTR)Attribute + Attribute->Length);
+ Status = FindAttribute(DeviceExt, FileRecord, AttributeData, L"", 0,
&DataContext);
+ if (NT_SUCCESS(Status))
+ {
+ Size = AttributeDataLength(&DataContext->Record);
+ ReleaseAttributeContext(DataContext);
}
return Size;
@@ -134,7 +130,7 @@
/* Convert file flags */
NtfsFileFlagsToAttributes(FileName->FileAttributes | StdInfo->FileAttribute,
&Info->FileAttributes);
- Info->EndOfFile.QuadPart = NtfsGetFileSize(FileRecord, FileName);
+ Info->EndOfFile.QuadPart = NtfsGetFileSize(DeviceExt, FileRecord, FileName);
Info->AllocationSize.QuadPart = ROUND_UP(Info->EndOfFile.QuadPart,
DeviceExt->NtfsInfo.BytesPerCluster);
Info->FileIndex = MFTIndex;
@@ -184,7 +180,7 @@
/* Convert file flags */
NtfsFileFlagsToAttributes(FileName->FileAttributes | StdInfo->FileAttribute,
&Info->FileAttributes);
- Info->EndOfFile.QuadPart = NtfsGetFileSize(FileRecord, FileName);
+ Info->EndOfFile.QuadPart = NtfsGetFileSize(DeviceExt, FileRecord, FileName);
Info->AllocationSize.QuadPart = ROUND_UP(Info->EndOfFile.QuadPart,
DeviceExt->NtfsInfo.BytesPerCluster);
Info->FileIndex = MFTIndex;
@@ -249,7 +245,7 @@
/* Convert file flags */
NtfsFileFlagsToAttributes(FileName->FileAttributes | StdInfo->FileAttribute,
&Info->FileAttributes);
- Info->EndOfFile.QuadPart = NtfsGetFileSize(FileRecord, FileName);
+ Info->EndOfFile.QuadPart = NtfsGetFileSize(DeviceExt, FileRecord, FileName);
Info->AllocationSize.QuadPart = ROUND_UP(Info->EndOfFile.QuadPart,
DeviceExt->NtfsInfo.BytesPerCluster);
Info->FileIndex = MFTIndex;