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/mft.c?rev=65257&r1=65256&r2=65257&view=diff
==============================================================================
--- 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;
                 }
             }
         }


Reply via email to