Author: pschweitzer
Date: Tue Nov 4 21:16:14 2014
New Revision: 65257
URL:
http://svn.reactos.org/svn/reactos?rev=65257&view=rev
Log:
[NTFS]
Actually, we know how to read non resident attributes, so read a non resident attribute
list if found.
Modified:
trunk/reactos/drivers/filesystems/ntfs/mft.c
Modified: trunk/reactos/drivers/filesystems/ntfs/mft.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/ntfs/m…
==============================================================================
--- trunk/reactos/drivers/filesystems/ntfs/mft.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/ntfs/mft.c [iso-8859-1] Tue Nov 4 21:16:14 2014
@@ -105,44 +105,35 @@
PNTFS_ATTR_RECORD ListAttrRecord;
PNTFS_ATTR_RECORD ListAttrRecordEnd;
- // Do not handle non-resident yet
- if (AttrRecord->IsNonResident)
- {
- UNIMPLEMENTED;
+ ListContext = PrepareAttributeContext(AttrRecord);
+
+ ListSize = AttributeDataLength(&ListContext->Record);
+ if(ListSize <= 0xFFFFFFFF)
+ ListBuffer = ExAllocatePoolWithTag(NonPagedPool, (ULONG)ListSize,
TAG_NTFS);
+ else
+ ListBuffer = NULL;
+
+ if(!ListBuffer)
+ {
+ DPRINT("Failed to allocate memory: %x\n", (ULONG)ListSize);
continue;
}
- else
- {
- ListContext = PrepareAttributeContext(AttrRecord);
-
- ListSize = AttributeDataLength(&ListContext->Record);
- if(ListSize <= 0xFFFFFFFF)
- ListBuffer = ExAllocatePoolWithTag(NonPagedPool, (ULONG)ListSize,
TAG_NTFS);
- else
- ListBuffer = NULL;
-
- if(!ListBuffer)
+
+ ListAttrRecord = (PNTFS_ATTR_RECORD)ListBuffer;
+ ListAttrRecordEnd = (PNTFS_ATTR_RECORD)((PCHAR)ListBuffer + ListSize);
+
+ if (ReadAttribute(Vcb, ListContext, 0, ListBuffer, (ULONG)ListSize) ==
ListSize)
+ {
+ Context = FindAttributeHelper(Vcb, ListAttrRecord, ListAttrRecordEnd,
+ Type, Name, NameLength);
+
+ ReleaseAttributeContext(ListContext);
+ ExFreePoolWithTag(ListBuffer, TAG_NTFS);
+
+ if (Context != NULL)
{
- DPRINT("Failed to allocate memory: %x\n",
(ULONG)ListSize);
- continue;
- }
-
- ListAttrRecord = (PNTFS_ATTR_RECORD)ListBuffer;
- ListAttrRecordEnd = (PNTFS_ATTR_RECORD)((PCHAR)ListBuffer + ListSize);
-
- if (ReadAttribute(Vcb, ListContext, 0, ListBuffer, (ULONG)ListSize) ==
ListSize)
- {
- Context = FindAttributeHelper(Vcb, ListAttrRecord,
ListAttrRecordEnd,
- Type, Name, NameLength);
-
- ReleaseAttributeContext(ListContext);
- ExFreePoolWithTag(ListBuffer, TAG_NTFS);
-
- if (Context != NULL)
- {
- DPRINT("Found context = %p\n", Context);
- return Context;
- }
+ if (AttrRecord->IsNonResident) DPRINT("Found context =
%p\n", Context);
+ return Context;
}
}
}