https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d1b3115afa62b73bf6648…
commit d1b3115afa62b73bf66480fa3b11441d55ffd3f3
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Wed Feb 7 12:34:23 2024 +0100
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Fri Feb 9 17:13:30 2024 +0100
[NTOS:IO] IopDisplayLoadingMessage(): Display the loading messages only in SOS mode.
- Make the boolean SosEnabled from ex/init.c visible globally so that
it can be checked against by IopDisplayLoadingMessage().
- Also use RtlString* function to construct the string.
---
ntoskrnl/ex/init.c | 3 ++-
ntoskrnl/io/iomgr/driver.c | 22 +++++++++++-----------
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/ntoskrnl/ex/init.c b/ntoskrnl/ex/init.c
index 0bbda8a62cd..00e5f453dd8 100644
--- a/ntoskrnl/ex/init.c
+++ b/ntoskrnl/ex/init.c
@@ -70,6 +70,7 @@ BOOLEAN ExpInTextModeSetup;
BOOLEAN IoRemoteBootClient;
ULONG InitSafeBootMode;
BOOLEAN InitIsWinPEMode, InitWinPEModeType;
+BOOLEAN SosEnabled; // Used by driver.c!IopDisplayLoadingMessage()
/* NT Boot Path */
UNICODE_STRING NtSystemRoot;
@@ -1344,7 +1345,7 @@ Phase1InitializationDiscard(IN PVOID Context)
NTSTATUS Status, MsgStatus;
TIME_FIELDS TimeFields;
LARGE_INTEGER SystemBootTime, UniversalBootTime, OldTime, Timeout;
- BOOLEAN SosEnabled, NoGuiBoot, ResetBias = FALSE, AlternateShell = FALSE;
+ BOOLEAN NoGuiBoot, ResetBias = FALSE, AlternateShell = FALSE;
PLDR_DATA_TABLE_ENTRY NtosEntry;
PMESSAGE_RESOURCE_ENTRY MsgEntry;
PCHAR CommandLine, Y2KHackRequired, SafeBoot, Environment;
diff --git a/ntoskrnl/io/iomgr/driver.c b/ntoskrnl/io/iomgr/driver.c
index ad84b4d714b..ac3ac0f3815 100644
--- a/ntoskrnl/io/iomgr/driver.c
+++ b/ntoskrnl/io/iomgr/driver.c
@@ -33,7 +33,6 @@ static const WCHAR ServicesKeyName[] =
L"\\Registry\\Machine\\System\\CurrentCon
POBJECT_TYPE IoDriverObjectType = NULL;
-extern BOOLEAN ExpInTextModeSetup;
extern BOOLEAN PnpSystemInit;
extern BOOLEAN PnPBootDriversLoaded;
extern KEVENT PiEnumerationFinished;
@@ -305,25 +304,26 @@ IopSuffixUnicodeString(
}
/**
- * @brief Displays a driver loading message on the screen.
+ * @brief Displays a driver-loading message in SOS mode.
**/
static VOID
FASTCALL
IopDisplayLoadingMessage(
_In_ PUNICODE_STRING ServiceName)
{
+ extern BOOLEAN SosEnabled; // See ex/init.c
static const UNICODE_STRING DotSys = RTL_CONSTANT_STRING(L".SYS");
CHAR TextBuffer[256];
- if (ExpInTextModeSetup) return;
+ if (!SosEnabled) return;
if (!KeLoaderBlock) return;
RtlUpcaseUnicodeString(ServiceName, ServiceName, FALSE);
- snprintf(TextBuffer, sizeof(TextBuffer),
- "%s%sSystem32\\Drivers\\%wZ%s\r\n",
- KeLoaderBlock->ArcBootDeviceName,
- KeLoaderBlock->NtBootPathName,
- ServiceName,
- IopSuffixUnicodeString(&DotSys, ServiceName) ? "" :
".SYS");
+ RtlStringCbPrintfA(TextBuffer, sizeof(TextBuffer),
+ "%s%sSystem32\\Drivers\\%wZ%s\r\n",
+ KeLoaderBlock->ArcBootDeviceName,
+ KeLoaderBlock->NtBootPathName,
+ ServiceName,
+ IopSuffixUnicodeString(&DotSys, ServiceName) ? "" :
".SYS");
HalDisplayString(TextBuffer);
}
@@ -1196,8 +1196,8 @@ IopInitializeSystemDrivers(VOID)
PiPerformSyncDeviceAction(IopRootDeviceNode->PhysicalDeviceObject,
PiActionEnumDeviceTree);
- /* No system drivers on the boot cd */
- if (KeLoaderBlock->SetupLdrBlock) return; // ExpInTextModeSetup
+ /* HACK: No system drivers on the BootCD */
+ if (KeLoaderBlock->SetupLdrBlock) return;
/* Get the driver list */
SavedList = DriverList = CmGetSystemDriverList();