From fbb0ffdbe2f66a645d651f37502cb30b1b7b534b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Fri, 7 Dec 2007 17:00:21 +0000 Subject: [PATCH] Better guess of the file path svn path=/trunk/; revision=31057 --- reactos/ntoskrnl/ke/freeldr.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ke/freeldr.c b/reactos/ntoskrnl/ke/freeldr.c index 704e6ef8786..7c3e41a34e2 100644 --- a/reactos/ntoskrnl/ke/freeldr.c +++ b/reactos/ntoskrnl/ke/freeldr.c @@ -877,6 +877,7 @@ KiRosFrldrLpbToNtLpb(IN PROS_LOADER_PARAMETER_BLOCK RosLoaderBlock, PIMAGE_NT_HEADERS NtHeader; WCHAR PathToDrivers[] = L"\\SystemRoot\\System32\\drivers\\"; WCHAR PathToSystem32[] = L"\\SystemRoot\\System32\\"; + WCHAR PathSetup[] = L"\\SystemRoot\\"; CHAR DriverNameLow[256]; ULONG Base; @@ -1064,7 +1065,13 @@ KiRosFrldrLpbToNtLpb(IN PROS_LOADER_PARAMETER_BLOCK RosLoaderBlock, LdrEntry->FullDllName.Buffer = BldrModuleStringsFull[i]; /* Guess the path */ - if (strstr(DriverNameLow, ".dll") || strstr(DriverNameLow, ".exe")) + if (LoaderBlock->SetupLdrBlock) + { + UNICODE_STRING TempString; + RtlInitUnicodeString(&TempString, PathSetup); + RtlAppendUnicodeStringToString(&LdrEntry->FullDllName, &TempString); + } + else if (strstr(DriverNameLow, ".dll") || strstr(DriverNameLow, ".exe")) { UNICODE_STRING TempString; RtlInitUnicodeString(&TempString, PathToSystem32);