Author: tfaber
Date: Tue May 30 17:22:13 2017
New Revision: 74699

URL: http://svn.reactos.org/svn/reactos?rev=74699&view=rev
Log:
[NTOS:IO]
- Save an indentation level in IopAttachFilterDrivers
CORE-13336

Modified:
    trunk/reactos/ntoskrnl/io/iomgr/driver.c

Modified: trunk/reactos/ntoskrnl/io/iomgr/driver.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/driver.c?rev=74699&r1=74698&r2=74699&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/io/iomgr/driver.c    [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/iomgr/driver.c    [iso-8859-1] Tue May 30 
17:22:13 2017
@@ -646,6 +646,7 @@
     UNICODE_STRING Class;
     WCHAR ClassBuffer[40];
     UNICODE_STRING EnumRoot = RTL_CONSTANT_STRING(ENUM_ROOT);
+    UNICODE_STRING ControlClass = 
RTL_CONSTANT_STRING(L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Class");
     HANDLE EnumRootKey, SubKey;
     NTSTATUS Status;
 
@@ -720,65 +721,66 @@
     ZwClose(SubKey);
     ZwClose(EnumRootKey);
 
+    /* If there is no class GUID, we're done */
+    if (!NT_SUCCESS(Status))
+    {
+        return STATUS_SUCCESS;
+    }
+
     /*
      * Load the class filter driver
      */
-    if (NT_SUCCESS(Status))
-    {
-        UNICODE_STRING ControlClass = 
RTL_CONSTANT_STRING(L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Class");
-
-        Status = IopOpenRegistryKeyEx(&EnumRootKey,
-                                      NULL,
-                                      &ControlClass,
-                                      KEY_READ);
-        if (!NT_SUCCESS(Status))
-        {
-            DPRINT1("IopOpenRegistryKeyEx() failed for '%wZ' with status 
0x%lx\n",
-                    &ControlClass, Status);
-            return Status;
-        }
-
-        /* Open subkey */
-        Status = IopOpenRegistryKeyEx(&SubKey,
-                                      EnumRootKey,
-                                      &Class,
-                                      KEY_READ);
-        if (!NT_SUCCESS(Status))
-        {
-            /* It's okay if there's no class key */
-            DPRINT1("IopOpenRegistryKeyEx() failed for '%wZ' with status 
0x%lx\n",
-                    &Class, Status);
-            ZwClose(EnumRootKey);
-            return STATUS_SUCCESS;
-        }
-
-        QueryTable[0].QueryRoutine = IopAttachFilterDriversCallback;
-        if (Lower)
-            QueryTable[0].Name = L"LowerFilters";
-        else
-            QueryTable[0].Name = L"UpperFilters";
-        QueryTable[0].EntryContext = NULL;
-        QueryTable[0].Flags = 0;
-        QueryTable[0].DefaultType = REG_NONE;
-
-        Status = RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,
-                                        (PWSTR)SubKey,
-                                        QueryTable,
-                                        DeviceNode,
-                                        NULL);
-
-        /* Clean up */
+    Status = IopOpenRegistryKeyEx(&EnumRootKey,
+                                  NULL,
+                                  &ControlClass,
+                                  KEY_READ);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("IopOpenRegistryKeyEx() failed for '%wZ' with status 0x%lx\n",
+                &ControlClass, Status);
+        return Status;
+    }
+
+    /* Open subkey */
+    Status = IopOpenRegistryKeyEx(&SubKey,
+                                  EnumRootKey,
+                                  &Class,
+                                  KEY_READ);
+    if (!NT_SUCCESS(Status))
+    {
+        /* It's okay if there's no class key */
+        DPRINT1("IopOpenRegistryKeyEx() failed for '%wZ' with status 0x%lx\n",
+                &Class, Status);
+        ZwClose(EnumRootKey);
+        return STATUS_SUCCESS;
+    }
+
+    QueryTable[0].QueryRoutine = IopAttachFilterDriversCallback;
+    if (Lower)
+        QueryTable[0].Name = L"LowerFilters";
+    else
+        QueryTable[0].Name = L"UpperFilters";
+    QueryTable[0].EntryContext = NULL;
+    QueryTable[0].Flags = 0;
+    QueryTable[0].DefaultType = REG_NONE;
+
+    Status = RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,
+                                    (PWSTR)SubKey,
+                                    QueryTable,
+                                    DeviceNode,
+                                    NULL);
+
+    /* Clean up */
+    ZwClose(SubKey);
+    ZwClose(EnumRootKey);
+
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("Failed to load class %s filters: %08X\n",
+                Lower ? "lower" : "upper", Status);
         ZwClose(SubKey);
         ZwClose(EnumRootKey);
-
-        if (!NT_SUCCESS(Status))
-        {
-            DPRINT1("Failed to load class %s filters: %08X\n",
-                    Lower ? "lower" : "upper", Status);
-            ZwClose(SubKey);
-            ZwClose(EnumRootKey);
-            return Status;
-        }
+        return Status;
     }
 
     return STATUS_SUCCESS;


Reply via email to