mirror of
https://github.com/reactos/reactos.git
synced 2025-07-27 07:41:51 +00:00
[NTOS:IO] Start loading drivers from the disk only after SystemRoot is initialized
Add another PnPBootDriversInitialized variable to indicate a point where both disk subsystem and SystemRoot symlink are initialized, and use it in a PiCallDriverAddDevice call.
This commit is contained in:
parent
c4c0585f96
commit
e5254974d2
3 changed files with 8 additions and 1 deletions
|
@ -77,6 +77,7 @@ extern KSPIN_LOCK IopLogListLock;
|
||||||
extern KSPIN_LOCK IopTimerLock;
|
extern KSPIN_LOCK IopTimerLock;
|
||||||
|
|
||||||
extern PDEVICE_OBJECT IopErrorLogObject;
|
extern PDEVICE_OBJECT IopErrorLogObject;
|
||||||
|
extern BOOLEAN PnPBootDriversInitialized;
|
||||||
|
|
||||||
GENERAL_LOOKASIDE IoLargeIrpLookaside;
|
GENERAL_LOOKASIDE IoLargeIrpLookaside;
|
||||||
GENERAL_LOOKASIDE IoSmallIrpLookaside;
|
GENERAL_LOOKASIDE IoSmallIrpLookaside;
|
||||||
|
@ -583,6 +584,10 @@ IoInitSystem(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the disk subsystem is initialized here and the SystemRoot is set too
|
||||||
|
// we can finally load other drivers from the boot volume
|
||||||
|
PnPBootDriversInitialized = TRUE;
|
||||||
|
|
||||||
#if !defined(_WINKD_) && defined(KDBG)
|
#if !defined(_WINKD_) && defined(KDBG)
|
||||||
/* Read KDB Data */
|
/* Read KDB Data */
|
||||||
KdbInit();
|
KdbInit();
|
||||||
|
|
|
@ -35,6 +35,7 @@ extern ERESOURCE IopDriverLoadResource;
|
||||||
extern BOOLEAN PnpSystemInit;
|
extern BOOLEAN PnpSystemInit;
|
||||||
extern PDEVICE_NODE IopRootDeviceNode;
|
extern PDEVICE_NODE IopRootDeviceNode;
|
||||||
extern BOOLEAN PnPBootDriversLoaded;
|
extern BOOLEAN PnPBootDriversLoaded;
|
||||||
|
extern BOOLEAN PnPBootDriversInitialized;
|
||||||
|
|
||||||
#define MAX_DEVICE_ID_LEN 200
|
#define MAX_DEVICE_ID_LEN 200
|
||||||
#define MAX_SEPARATORS_INSTANCEID 0
|
#define MAX_SEPARATORS_INSTANCEID 0
|
||||||
|
@ -1560,7 +1561,7 @@ IopActionInitChildServices(PDEVICE_NODE DeviceNode,
|
||||||
IopDeviceNodeHasFlag(DeviceNode, DNF_DISABLED))
|
IopDeviceNodeHasFlag(DeviceNode, DNF_DISABLED))
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
PiCallDriverAddDevice(DeviceNode, PnPBootDriversLoaded);
|
PiCallDriverAddDevice(DeviceNode, PnPBootDriversInitialized);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ PUNICODE_STRING PiInitGroupOrderTable;
|
||||||
USHORT PiInitGroupOrderTableCount;
|
USHORT PiInitGroupOrderTableCount;
|
||||||
INTERFACE_TYPE PnpDefaultInterfaceType;
|
INTERFACE_TYPE PnpDefaultInterfaceType;
|
||||||
BOOLEAN PnPBootDriversLoaded = FALSE;
|
BOOLEAN PnPBootDriversLoaded = FALSE;
|
||||||
|
BOOLEAN PnPBootDriversInitialized = FALSE;
|
||||||
|
|
||||||
ARBITER_INSTANCE IopRootBusNumberArbiter;
|
ARBITER_INSTANCE IopRootBusNumberArbiter;
|
||||||
ARBITER_INSTANCE IopRootIrqArbiter;
|
ARBITER_INSTANCE IopRootIrqArbiter;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue