https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b7042928089b360663f310a6a7aa0a2c0eb0326d

commit b7042928089b360663f310a6a7aa0a2c0eb0326d
Author:     Victor Perevertkin <[email protected]>
AuthorDate: Wed Jan 13 04:13:22 2021 +0300
Commit:     Victor Perevertkin <[email protected]>
CommitDate: Wed Jan 27 05:15:15 2021 +0300

    [NTOS:IO] Add more enumeration requests during the boot process
    
    This is to ensure that all needed devices are initialized during the
    early boot
    
    CORE-7826
---
 ntoskrnl/io/iomgr/driver.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/ntoskrnl/io/iomgr/driver.c b/ntoskrnl/io/iomgr/driver.c
index 1e02c1cc213..45ce4a49827 100644
--- a/ntoskrnl/io/iomgr/driver.c
+++ b/ntoskrnl/io/iomgr/driver.c
@@ -1047,6 +1047,13 @@ IopInitializeBootDrivers(VOID)
      * See PiQueueDeviceAction function
      */
     PnPBootDriversLoaded = TRUE;
+
+    DbgPrint("BOOT DRIVERS LOADED\n");
+
+    PiQueueDeviceAction(IopRootDeviceNode->PhysicalDeviceObject,
+                        PiActionEnumDeviceTree,
+                        NULL,
+                        NULL);
 }
 
 CODE_SEG("INIT")
@@ -1056,6 +1063,8 @@ IopInitializeSystemDrivers(VOID)
 {
     PUNICODE_STRING *DriverList, *SavedList;
 
+    PiPerformSyncDeviceAction(IopRootDeviceNode->PhysicalDeviceObject, 
PiActionEnumDeviceTree);
+
     /* No system drivers on the boot cd */
     if (KeLoaderBlock->SetupLdrBlock) return; // ExpInTextModeSetup
 
@@ -1080,6 +1089,11 @@ IopInitializeSystemDrivers(VOID)
 
     /* Free the list */
     ExFreePool(SavedList);
+
+    PiQueueDeviceAction(IopRootDeviceNode->PhysicalDeviceObject,
+                        PiActionEnumDeviceTree,
+                        NULL,
+                        NULL);
 }
 
 /*

Reply via email to