From b7042928089b360663f310a6a7aa0a2c0eb0326d Mon Sep 17 00:00:00 2001 From: Victor Perevertkin Date: Wed, 13 Jan 2021 04:13:22 +0300 Subject: [PATCH] [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); } /*