[NTOSKRNL]
authorCameron Gutman <aicommander@gmail.com>
Tue, 31 Jan 2012 18:26:03 +0000 (18:26 +0000)
committerCameron Gutman <aicommander@gmail.com>
Tue, 31 Jan 2012 18:26:03 +0000 (18:26 +0000)
- Don't check for the correct parent in IopActionInitChildServices
- This function is also used to load drivers later for devices enumerated early in boot (before we have access to the disk) and we want it to run for all devices on the system, not just those that are immediate children of the root node
- Fixes broken PnP in 3rd stage

svn path=/branches/usb-bringup-trunk/; revision=55355

ntoskrnl/io/pnpmgr/pnpmgr.c

index 05ddc37..75188f9 100644 (file)
@@ -2534,16 +2534,12 @@ IopActionInitChildServices(PDEVICE_NODE DeviceNode,
    }
 
    /*
-    * Make sure this device node is a direct child of the parent device node
-    * that is given as an argument
+    * We don't want to check for a direct child because
+    * this function is called during boot to reinitialize
+    * devices with drivers that couldn't load yet due to
+    * stage 0 limitations (ie can't load from disk yet).
     */
 
-   if (DeviceNode->Parent != ParentDeviceNode)
-   {
-      DPRINT("Skipping 2+ level child\n");
-      return STATUS_SUCCESS;
-   }
-
    if (!(DeviceNode->Flags & DNF_PROCESSED))
    {
        DPRINT1("Child not ready to be added\n");