[ros-diffs] [ion] 55452: [NTOSKRNL]: Finish implementation of NtAreMappedFilesTheSame based on what winetests revealed. Should fix all 20+ winetests in this area, on top of making Ldr suck less.

ion at svn.reactos.org ion at svn.reactos.org
Mon Feb 6 08:17:05 UTC 2012


Author: ion
Date: Mon Feb  6 08:17:03 2012
New Revision: 55452

URL: http://svn.reactos.org/svn/reactos?rev=55452&view=rev
Log:
[NTOSKRNL]: Finish implementation of NtAreMappedFilesTheSame based on what winetests revealed. Should fix all 20+ winetests in this area, on top of making Ldr suck less.

Modified:
    trunk/reactos/ntoskrnl/mm/ARM3/section.c

Modified: trunk/reactos/ntoskrnl/mm/ARM3/section.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/section.c?rev=55452&r1=55451&r2=55452&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/section.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/section.c [iso-8859-1] Mon Feb  6 08:17:03 2012
@@ -1387,8 +1387,6 @@
     PMEMORY_AREA MemoryArea1, MemoryArea2;
     PROS_SECTION_OBJECT Section1, Section2;
     
-    DPRINT1("Is image: %p the same as file: %p?\n", File1MappedAsAnImage, File2MappedAsFile);
-    
     /* Lock address space */
     AddressSpace = MmGetCurrentAddressSpace();
     MmLockAddressSpace(AddressSpace);
@@ -1398,7 +1396,6 @@
     if (!MemoryArea1)
     {
         /* Fail, the address does not exist */
-        DPRINT1("Invalid address\n");
         MmUnlockAddressSpace(AddressSpace);
         return STATUS_INVALID_ADDRESS;
     }
@@ -1407,7 +1404,6 @@
     if (MemoryArea1->Type != MEMORY_AREA_SECTION_VIEW)
     {
         /* Fail, the address is not a section */
-        DPRINT1("Invalid address (not a section)\n");
         MmUnlockAddressSpace(AddressSpace);
         return STATUS_CONFLICTING_ADDRESSES;
     }
@@ -1416,7 +1412,6 @@
     Section1 = MemoryArea1->Data.SectionData.Section;
     if (Section1->FileObject == NULL)
     {
-        DPRINT1("No file object\n");
         MmUnlockAddressSpace(AddressSpace);
         return STATUS_CONFLICTING_ADDRESSES; 
     }
@@ -1426,7 +1421,6 @@
     if (!MemoryArea2)
     {
         /* Fail, the address does not exist */
-        DPRINT1("Invalid address\n");
         MmUnlockAddressSpace(AddressSpace);
         return STATUS_INVALID_ADDRESS;
     }
@@ -1435,7 +1429,6 @@
     if (MemoryArea2->Type != MEMORY_AREA_SECTION_VIEW)
     {
         /* Fail, the address is not a section */
-        DPRINT1("Invalid address (not a section)\n");
         MmUnlockAddressSpace(AddressSpace);
         return STATUS_CONFLICTING_ADDRESSES;
     }
@@ -1444,23 +1437,17 @@
     Section2 = MemoryArea2->Data.SectionData.Section;
     if (Section2->FileObject == NULL)
     {
-        DPRINT1("No file object\n");
         MmUnlockAddressSpace(AddressSpace);
         return STATUS_CONFLICTING_ADDRESSES; 
     }
     
-    /* These dbgprints should allow me to see what should w ecompare in ROS's section implementation once the winetests are run... for now lie and say they're not equal. */
-    DPRINT1("FO1/2: %p %p\n", Section1->FileObject, Section2->FileObject);
-    DPRINT1("SOP: %p %p\n",
-            Section1->FileObject->SectionObjectPointer,
-            Section2->FileObject->SectionObjectPointer);
-    DPRINT1("SCM: %p %p\n",
-            Section1->FileObject->SectionObjectPointer->SharedCacheMap,
-            Section2->FileObject->SectionObjectPointer->SharedCacheMap);
-    DPRINT1("ISO: %p %p\n",
-            Section1->FileObject->SectionObjectPointer->ImageSectionObject,
-            Section2->FileObject->SectionObjectPointer->ImageSectionObject);
-    DPRINT1("SISO: %p %p\n", Section1->ImageSection, Section2->ImageSection);
+    /* The shared cache map seems to be the same if both of these are equal */
+    if (Section1->FileObject->SectionObjectPointer->SharedCacheMap ==
+        Section2->FileObject->SectionObjectPointer->SharedCacheMap)
+    {
+        MmUnlockAddressSpace(AddressSpace);
+        return STATUS_SUCCESS; 
+    }
     
     /* Unlock address space */
     MmUnlockAddressSpace(AddressSpace);




More information about the Ros-diffs mailing list