Author: hpoussin
Date: Sun Mar 14 20:21:38 2010
New Revision: 46200
URL:
http://svn.reactos.org/svn/reactos?rev=46200&view=rev
Log:
[ntoskrnl] Better fix for correct display of loaded drivers
Modified:
trunk/reactos/ntoskrnl/io/iomgr/driver.c
Modified: trunk/reactos/ntoskrnl/io/iomgr/driver.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/driver.c…
==============================================================================
--- trunk/reactos/ntoskrnl/io/iomgr/driver.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/iomgr/driver.c [iso-8859-1] Sun Mar 14 20:21:38 2010
@@ -150,6 +150,39 @@
}
/*
+ * RETURNS
+ * TRUE if String2 contains String1 as a suffix.
+ */
+BOOLEAN
+NTAPI
+IopSuffixUnicodeString(
+ IN PCUNICODE_STRING String1,
+ IN PCUNICODE_STRING String2)
+{
+ PWCHAR pc1;
+ PWCHAR pc2;
+ ULONG Length;
+
+ if (String2->Length < String1->Length)
+ return FALSE;
+
+ Length = String1->Length / 2;
+ pc1 = String1->Buffer;
+ pc2 = &String2->Buffer[String2->Length / sizeof(WCHAR) - Length];
+
+ if (pc1 && pc2)
+ {
+ while (Length--)
+ {
+ if( *pc1++ != *pc2++ )
+ return FALSE;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*
* IopDisplayLoadingMessage
*
* Display 'Loading XXX...' message.
@@ -161,19 +194,16 @@
IopDisplayLoadingMessage(PUNICODE_STRING ServiceName)
{
CHAR TextBuffer[256];
+ UNICODE_STRING DotSys = RTL_CONSTANT_STRING(L".SYS");
if (ExpInTextModeSetup) return;
RtlUpcaseUnicodeString(ServiceName, ServiceName, FALSE);
snprintf(TextBuffer, sizeof(TextBuffer),
- "%s%s%s\\%wZ",
+ "%s%sSystem32\\Drivers\\%wZ%s\n",
KeLoaderBlock->ArcBootDeviceName,
KeLoaderBlock->NtBootPathName,
- "System32\\Drivers",
- ServiceName);
- if (!strstr(TextBuffer, ".sys"))
- strcat(TextBuffer, ".sys\n");
- else
- strcat(TextBuffer, "\n");
+ ServiceName,
+ IopSuffixUnicodeString(&DotSys, ServiceName) ? "" :
".SYS");
HalDisplayString(TextBuffer);
}