diff --git a/reactos/ntoskrnl/cm/registry.c b/reactos/ntoskrnl/cm/registry.c index 1ab4afea0bb..6df10380125 100644 --- a/reactos/ntoskrnl/cm/registry.c +++ b/reactos/ntoskrnl/cm/registry.c @@ -1,4 +1,4 @@ -/* $Id: registry.c,v 1.71 2002/05/05 14:57:43 chorns Exp $ +/* $Id: registry.c,v 1.72 2002/06/16 11:45:06 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -463,6 +463,48 @@ CmInitializeRegistry(VOID) } +VOID +CmInit2(PCHAR CommandLine) +{ + PCHAR p1, p2; + ULONG PiceStart; + + /* FIXME: Store current command line */ + + /* FIXME: Create the 'CurrentControlSet' link. */ + + /* Set PICE 'Start' value to 1, if PICE debugging is enabled */ + PiceStart = 4; + p1 = (PCHAR)CommandLine; + while (p1 && (p2 = strchr(p1, '/'))) + { + p2++; + if (_strnicmp(p2, "DEBUGPORT", 9) == 0) + { + p2 += 9; + if (*p2 == '=') + { + p2++; + if (_strnicmp(p2, "PICE", 4) == 0) + { + p2 += 4; + PiceStart = 1; + } + } + } + p1 = p2; + } + + RtlWriteRegistryValue(RTL_REGISTRY_SERVICES, + L"\\Pice", + L"Start", + REG_DWORD, + &PiceStart, + sizeof(ULONG)); + +} + + NTSTATUS CmiConnectHive(PWSTR FileName, PWSTR FullName, diff --git a/reactos/ntoskrnl/include/internal/ldr.h b/reactos/ntoskrnl/include/internal/ldr.h index ee210dad015..cc3e6c522d0 100644 --- a/reactos/ntoskrnl/include/internal/ldr.h +++ b/reactos/ntoskrnl/include/internal/ldr.h @@ -19,6 +19,9 @@ #define FILESYSTEM_ROOT_NAME L"\\FileSystem\\" +extern ULONG_PTR LdrHalBase; + + NTSTATUS LdrLoadInitialProcess ( VOID @@ -92,7 +95,6 @@ VOID LdrInit1(VOID); VOID LdrInitDebug(PLOADER_MODULE Module, PWCH Name); -VOID LdrLoadUserModuleSymbols(PLDR_MODULE ModuleObject); PVOID LdrSafePEProcessModule( PVOID ModuleLoadBase, @@ -110,6 +112,13 @@ LdrUnloadModule(PMODULE_OBJECT ModuleObject); PMODULE_OBJECT LdrGetModuleObject(PUNICODE_STRING ModuleName); -extern ULONG_PTR LdrHalBase; + +#ifdef KDBG +VOID +LdrpLoadModuleSymbols(PMODULE_OBJECT ModuleObject); + +VOID +LdrLoadUserModuleSymbols(PLDR_MODULE ModuleObject); +#endif /* KDBG */ #endif /* __INCLUDE_INTERNAL_LDR_H */ diff --git a/reactos/ntoskrnl/include/internal/ntoskrnl.h b/reactos/ntoskrnl/include/internal/ntoskrnl.h index c89fed618bd..7481602c1c4 100644 --- a/reactos/ntoskrnl/include/internal/ntoskrnl.h +++ b/reactos/ntoskrnl/include/internal/ntoskrnl.h @@ -43,6 +43,7 @@ VOID IoInit(VOID); VOID ObInit(VOID); VOID PsInit(VOID); VOID CmInitializeRegistry(VOID); +VOID CmInit2(PCHAR CommandLine); VOID CmShutdownRegistry(VOID); VOID CmImportHive(PCHAR ChunkBase, ULONG ChunkSize); VOID KdInitSystem(ULONG Reserved, PLOADER_PARAMETER_BLOCK LoaderBlock); diff --git a/reactos/ntoskrnl/io/driver.c b/reactos/ntoskrnl/io/driver.c index c13a937f418..6aa1bf280c2 100644 --- a/reactos/ntoskrnl/io/driver.c +++ b/reactos/ntoskrnl/io/driver.c @@ -1,4 +1,4 @@ -/* $Id: driver.c,v 1.5 2002/06/13 15:13:54 ekohl Exp $ +/* $Id: driver.c,v 1.6 2002/06/16 11:44:13 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -524,8 +524,34 @@ LdrLoadAutoConfigDrivers(VOID) CHAR TextBuffer [256]; ULONG x, y, cx, cy; +#ifdef KDBG + UNICODE_STRING ModuleName; + PMODULE_OBJECT ModuleObject; +#endif + DPRINT("LdrLoadAutoConfigDrivers() called\n"); +#ifdef KDBG + /* + * Load symbols for ntoskrnl.exe and hal.dll because \SystemRoot + * is created after their module entries + */ + + RtlInitUnicodeString(&ModuleName, KERNEL_MODULE_NAME); + ModuleObject = LdrGetModuleObject(&ModuleName); + if (ModuleObject != NULL) + { + LdrpLoadModuleSymbols(ModuleObject); + } + + RtlInitUnicodeString(&ModuleName, HAL_MODULE_NAME); + ModuleObject = LdrGetModuleObject(&ModuleName); + if (ModuleObject != NULL) + { + LdrpLoadModuleSymbols(ModuleObject); + } +#endif /* KDBG */ + GroupEntry = GroupListHead.Flink; while (GroupEntry != &GroupListHead) { diff --git a/reactos/ntoskrnl/ke/main.c b/reactos/ntoskrnl/ke/main.c index 80f0240694e..93c99cbfd73 100644 --- a/reactos/ntoskrnl/ke/main.c +++ b/reactos/ntoskrnl/ke/main.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: main.c,v 1.124 2002/06/12 23:30:08 ekohl Exp $ +/* $Id: main.c,v 1.125 2002/06/16 11:44:53 ekohl Exp $ * * PROJECT: ReactOS kernel * FILE: ntoskrnl/ke/main.c @@ -75,305 +75,9 @@ volatile BOOLEAN Initialized = FALSE; extern PVOID Ki386InitialStackArray[MAXIMUM_PROCESSORS]; -typedef struct -{ - LPWSTR ServiceName; - LPWSTR DeviceDesc; - LPWSTR Group; - DWORD Start; - DWORD Type; -} SERVICE, *PSERVICE; - -SERVICE Services[] = { - {L"pci", L"PCI Bus Driver", L"Boot Bus Extender", 0, 1}, - {L"keyboard", L"Standard Keyboard Driver", L"Base", 0, 1}, - {L"blue", L"Bluescreen Driver", L"Base", 0, 1}, - {L"vidport", L"Video Port Driver", L"Base", 0, 1}, - {L"vgamp", L"VGA Miniport", L"Base", 0, 1}, - {L"minixfs", L"Minix File System", L"File system", 0, 1}, - {L"msfs", L"Mail Slot File System", L"File system", 0, 1}, - {L"npfs", L"Named Pipe File System", L"File system", 0, 1}, - {L"psaux", L"PS/2 Auxillary Port Driver", L"", 0, 1}, - {L"mouclass", L"Mouse Class Driver", L"Pointer Class", 0, 1}, - {L"ndis", L"NDIS System Driver", L"NDIS Wrapper", 0, 1}, - {L"ne2000", L"Novell Eagle 2000 Driver", L"NDIS", 0, 1}, - {L"afd", L"AFD Networking Support Environment", L"TDI", 0, 1}, - {NULL,} -}; /* FUNCTIONS ****************************************************************/ -#define FULLREG - -VOID CreateDefaultRegistryForLegacyDriver( - PSERVICE Service) -{ -#ifdef FULLREG - WCHAR LegacyDriver[] = L"LegacyDriver"; -#endif - WCHAR InstancePath[MAX_PATH]; - WCHAR KeyNameBuffer[MAX_PATH]; - WCHAR Name[MAX_PATH]; - UNICODE_STRING KeyName; - HANDLE KeyHandle; -#ifdef FULLREG - DWORD DwordData; -#endif - ULONG Length; - NTSTATUS Status; - WCHAR ImagePath[MAX_PATH]; - - /* Enum section */ - wcscpy(Name, Service->ServiceName); - _wcsupr(Name); - wcscpy(InstancePath, L"Root\\LEGACY_"); - wcscat(InstancePath, Name); - wcscat(InstancePath, L"\\0000"); - - wcscpy(KeyNameBuffer, L"\\Registry\\Machine\\System\\CurrentControlSet\\Enum\\"); - wcscat(KeyNameBuffer, InstancePath); - - RtlInitUnicodeString(&KeyName, KeyNameBuffer); - - DPRINT("Key name is %S\n", KeyName.Buffer); - - Status = RtlpCreateRegistryKeyPath(KeyName.Buffer); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlpCreateRegistryKeyPath() failed with status %x\n", Status); - return; - } - - Status = RtlpGetRegistryHandle( - RTL_REGISTRY_ENUM, - InstancePath, - TRUE, - &KeyHandle); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlpGetRegistryHandle() failed (Status %x)\n", Status); - return; - } -#ifdef FULLREG - DwordData = 0; - Length = sizeof(DWORD); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"Capabilities", - REG_DWORD, - (LPWSTR)&DwordData, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } - - Length = (wcslen(LegacyDriver) + 1) * sizeof(WCHAR); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"Class", - REG_SZ, - LegacyDriver, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } -#endif - Length = (wcslen(Service->DeviceDesc) + 1) * sizeof(WCHAR); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"DeviceDesc", - REG_SZ, - Service->DeviceDesc, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } -#ifdef FULLREG - DwordData = 0; - Length = sizeof(DWORD); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"Legacy", - REG_DWORD, - (LPWSTR)&DwordData, - sizeof(DWORD)); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } -#endif - Length = (wcslen(Service->ServiceName) + 1) * sizeof(WCHAR); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"Service", - REG_SZ, - Service->ServiceName, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } - - NtClose(KeyHandle); - - - /* Services section */ - - Status = RtlpGetRegistryHandle( - RTL_REGISTRY_SERVICES, - Service->ServiceName, - TRUE, - &KeyHandle); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlpGetRegistryHandle() failed (Status %x)\n", Status); - return; - } -#ifdef FULLREG - Length = (wcslen(Service->DeviceDesc) + 1) * sizeof(WCHAR); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"DisplayName", - REG_SZ, - Service->DeviceDesc, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } - - DwordData = 1; - Length = sizeof(DWORD); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"ErrorControl", - REG_DWORD, - (LPWSTR)&DwordData, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } - - Length = (wcslen(Service->Group) + 1) * sizeof(WCHAR); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"Group", - REG_SZ, - Service->Group, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } -#endif - wcscpy(ImagePath, L"\\SystemRoot\\System32\\drivers\\"); - wcscat(ImagePath, Service->ServiceName); - wcscat(ImagePath, L".sys"); - - Length = (wcslen(ImagePath) + 1) * sizeof(WCHAR); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"ImagePath", - REG_SZ, - ImagePath, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } -#ifdef FULLREG - DwordData = Service->Start; - Length = sizeof(DWORD); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"Start", - REG_DWORD, - (LPWSTR)&DwordData, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } - - DwordData = Service->Type; - Length = sizeof(DWORD); - Status = RtlWriteRegistryValue( - RTL_REGISTRY_HANDLE, - (PWSTR)KeyHandle, - L"Type", - REG_DWORD, - (LPWSTR)&DwordData, - Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlWriteRegistryValue() failed (Status %x)\n", Status); - NtClose(KeyHandle); - return; - } -#endif - NtClose(KeyHandle); -} - -VOID CreateDefaultRegistry() -{ - NTSTATUS Status; - ULONG i; - - Status = RtlpCreateRegistryKeyPath(L"\\Registry\\Machine\\System\\CurrentControlSet\\Enum\\"); - if (!NT_SUCCESS(Status)) - { - CPRINT("RtlpCreateRegistryKeyPath() (Status %x)\n", Status); - return; - } - - Status = RtlpCreateRegistryKeyPath(L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\"); - if (!NT_SUCCESS(Status)) - { - CPRINT("RtlpCreateRegistryKeyPath() (Status %x)\n", Status); - return; - } - - for (i = 0; Services[i].ServiceName != NULL; i++) - { - CreateDefaultRegistryForLegacyDriver(&Services[i]); - } -} - - static BOOLEAN RtlpCheckFileNameExtension(PCHAR FileName, PCHAR Extension) @@ -963,6 +667,9 @@ ExpInitializeExecutive(VOID) } } + /* Initialize volatile registry settings */ + CmInit2((PCHAR)KeLoaderBlock.CommandLine); + /* * Enter the kernel debugger before starting up the boot drivers */ @@ -1010,10 +717,6 @@ ExpInitializeExecutive(VOID) #endif /* DBGPRINT_FILE_LOG */ -#if 0 - CreateDefaultRegistry(); -#endif - PiInitDefaultLocale(); /* diff --git a/reactos/ntoskrnl/ldr/loader.c b/reactos/ntoskrnl/ldr/loader.c index db546396a4f..be2c81d3710 100644 --- a/reactos/ntoskrnl/ldr/loader.c +++ b/reactos/ntoskrnl/ldr/loader.c @@ -1,4 +1,4 @@ -/* $Id: loader.c,v 1.112 2002/06/14 07:46:02 ekohl Exp $ +/* $Id: loader.c,v 1.113 2002/06/16 11:44:34 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -244,38 +244,6 @@ LdrInitModuleManagement(VOID) } -/* - * load the auto config drivers. - */ -#if 0 -static VOID -LdrLoadAutoConfigDriver(LPWSTR RelativeDriverName) -{ - WCHAR TmpFileName [MAX_PATH]; - CHAR Buffer [256]; - UNICODE_STRING DriverName; - ULONG x, y, cx, cy; - - HalQueryDisplayParameters(&x, &y, &cx, &cy); - RtlFillMemory(Buffer, x, ' '); - Buffer[x] = '\0'; - HalSetDisplayParameters(0, y-1); - HalDisplayString(Buffer); - - sprintf(Buffer, "Loading %S...\n",RelativeDriverName); - HalSetDisplayParameters(0, y-1); - HalDisplayString(Buffer); - HalSetDisplayParameters(cx, cy); - //CPRINT("Loading %S\n",RelativeDriverName); - - wcscpy(TmpFileName, L"\\SystemRoot\\system32\\drivers\\"); - wcscat(TmpFileName, RelativeDriverName); - RtlInitUnicodeString (&DriverName, TmpFileName); - - NtLoadDriver(&DriverName); -} -#endif - #ifdef KDBG BOOLEAN LdrpReadLine(PCHAR Line, @@ -426,10 +394,10 @@ PSYMBOL LdrpParseLine(PCHAR Line, return Symbol; } -VOID LdrpLoadModuleSymbolsFromBuffer( - PMODULE_OBJECT ModuleObject, - PVOID Buffer, - ULONG Length) +VOID +LdrpLoadModuleSymbolsFromBuffer(PMODULE_OBJECT ModuleObject, + PVOID Buffer, + ULONG Length) /* Symbols must be sorted by address, e.g. "nm --numeric-sort module.sys > module.sym" @@ -486,10 +454,11 @@ VOID LdrpLoadModuleSymbolsFromBuffer( } } -VOID LdrpLoadUserModuleSymbolsFromBuffer( - PLDR_MODULE ModuleObject, - PVOID Buffer, - ULONG Length) + +VOID +LdrpLoadUserModuleSymbolsFromBuffer(PLDR_MODULE ModuleObject, + PVOID Buffer, + ULONG Length) /* Symbols must be sorted by address, e.g. "nm --numeric-sort module.dll > module.sym" @@ -539,6 +508,7 @@ VOID LdrpLoadUserModuleSymbolsFromBuffer( } } + VOID LdrpLoadModuleSymbols(PMODULE_OBJECT ModuleObject) { @@ -642,7 +612,9 @@ LdrpLoadModuleSymbols(PMODULE_OBJECT ModuleObject) ExFreePool(FileBuffer); } -VOID LdrLoadUserModuleSymbols(PLDR_MODULE ModuleObject) + +VOID +LdrLoadUserModuleSymbols(PLDR_MODULE ModuleObject) { FILE_STANDARD_INFORMATION FileStdInfo; OBJECT_ATTRIBUTES ObjectAttributes; @@ -743,100 +715,16 @@ VOID LdrLoadUserModuleSymbols(PLDR_MODULE ModuleObject) ExFreePool(FileBuffer); } -#endif /* KDBG */ -#if 0 -VOID LdrLoadAutoConfigDrivers (VOID) +VOID +LdrpUnloadModuleSymbols(PMODULE_OBJECT ModuleObject) { - -#ifdef KDBG - NTSTATUS Status; - UNICODE_STRING ModuleName; - PMODULE_OBJECT ModuleObject; - - /* Load symbols for ntoskrnl.exe and hal.dll because \SystemRoot - is created after their module entries */ - - RtlInitUnicodeString(&ModuleName, KERNEL_MODULE_NAME); - Status = LdrFindModuleObject(&ModuleName, &ModuleObject); - if (NT_SUCCESS(Status)) - { - LdrpLoadModuleSymbols(ModuleObject); - } - - RtlInitUnicodeString(&ModuleName, HAL_MODULE_NAME); - Status = LdrFindModuleObject(&ModuleName, &ModuleObject); - if (NT_SUCCESS(Status)) - { - LdrpLoadModuleSymbols(ModuleObject); - } + /* FIXME: implement me! */ +} #endif /* KDBG */ - /* - * PCI bus driver - */ - //LdrLoadAutoConfigDriver( L"pci.sys" ); - - /* - * Keyboard driver - */ - LdrLoadAutoConfigDriver( L"keyboard.sys" ); - - if ((KdDebuggerEnabled) && (KdDebugState & KD_DEBUG_PICE)) - { - /* - * Private ICE debugger - */ - LdrLoadAutoConfigDriver( L"pice.sys" ); - } - - /* - * Raw console driver - */ - LdrLoadAutoConfigDriver( L"blue.sys" ); - - /* - * - */ - LdrLoadAutoConfigDriver(L"vidport.sys"); - -#if 0 - /* - * Minix filesystem driver - */ - LdrLoadAutoConfigDriver(L"minixfs.sys"); - - /* - * Mailslot filesystem driver - */ - LdrLoadAutoConfigDriver(L"msfs.sys"); -#endif - /* - * Named pipe filesystem driver - */ - LdrLoadAutoConfigDriver(L"npfs.sys"); - - /* - * Mouse drivers - */ -// LdrLoadAutoConfigDriver(L"l8042prt.sys"); - LdrLoadAutoConfigDriver(L"psaux.sys"); - LdrLoadAutoConfigDriver(L"mouclass.sys"); - - /* - * Networking - */ -#if 1 - /* - * NDIS library - */ - LdrLoadAutoConfigDriver(L"ndis.sys"); -#endif -} -#endif - NTSTATUS LdrpLoadImage(PUNICODE_STRING DriverName, @@ -1029,7 +917,7 @@ LdrUnloadModule(PMODULE_OBJECT ModuleObject) #ifdef KDBG /* Unload symbols for module if available */ -// LdrpUnloadModuleSymbols(Module); + LdrpUnloadModuleSymbols(ModuleObject); #endif /* KDBG */ /* Free text section */ @@ -1072,8 +960,7 @@ LdrInitializeBootStartDriver(PVOID ModuleLoadBase, CHAR TmpBaseName[MAX_PATH]; CHAR TmpFileName[MAX_PATH]; ANSI_STRING AnsiString; - ULONG Length; - PCHAR Ext; + PCHAR FileExt; #endif HalQueryDisplayParameters(&x, &y, &cx, &cy); @@ -1089,13 +976,13 @@ LdrInitializeBootStartDriver(PVOID ModuleLoadBase, #ifdef KDBG /* Split the filename into base name and extension */ - Ext = strrchr(FileName, '.'); - if (Ext != NULL) - Length = Ext - FileName; + FileExt = strrchr(FileName, '.'); + if (FileExt != NULL) + Length = FileExt - FileName; else Length = strlen(FileName); - if ((Ext != NULL) && (strcmp(Ext, ".sym") == 0)) + if ((FileExt != NULL) && (strcmp(FileExt, ".sym") == 0)) { DPRINT("Module %s is a symbol file\n", FileName); @@ -1111,18 +998,18 @@ LdrInitializeBootStartDriver(PVOID ModuleLoadBase, DPRINT("dasdsad: %s\n", TmpFileName); RtlAnsiStringToUnicodeString(&ModuleName, &AnsiString, TRUE); - Status = LdrFindModuleObject(&ModuleName, &ModuleObject); + ModuleObject = LdrGetModuleObject(&ModuleName); RtlFreeUnicodeString(&ModuleName); - if (!NT_SUCCESS(Status)) + if (ModuleObject == NULL) { strcpy(TmpFileName, TmpBaseName); strcat(TmpFileName, ".exe"); RtlInitAnsiString(&AnsiString, TmpFileName); RtlAnsiStringToUnicodeString(&ModuleName, &AnsiString, TRUE); - Status = LdrFindModuleObject(&ModuleName, &ModuleObject); + ModuleObject = LdrGetModuleObject(&ModuleName); RtlFreeUnicodeString(&ModuleName); } - if (NT_SUCCESS(Status)) + if (ModuleObject != NULL) { LdrpLoadModuleSymbolsFromBuffer(ModuleObject, ModuleLoadBase, diff --git a/reactos/system.hiv b/reactos/system.hiv index b2af860517c..634bbc77cc9 100644 --- a/reactos/system.hiv +++ b/reactos/system.hiv @@ -40,9 +40,9 @@ REGEDIT4 [\Registry\Machine\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder] "List"=multi:"SCSI Port", "SCSI Miniport", "Primary Disk", "SCSI Class Helper", \ "SCSI Class", "Boot File System", "Base", "Pointer Port", \ - "Keyboard Port", "Pointer Class", "Keyboard Class", "Video Init", \ - "Video", "File System", "Event log", "NDIS", "PNP_TDI", "TDI", \ - "Extended Base" + "Keyboard Port", "Pointer Class", "Keyboard Class", "Debug", \ + "Video Init", "Video", "File System", "Event log", "NDIS", \ + "PNP_TDI", "TDI", "Extended Base" [\Registry\Machine\SYSTEM\CurrentControlSet\Control\Session Manager] "BootExecute"=multi:"autocheck autochk *" @@ -200,6 +200,13 @@ REGEDIT4 "Start"=dword:00000001 "Type"=dword:00000001 +[\Registry\Machine\SYSTEM\CurrentControlSet\Services\Pice] +"ErrorControl"=dword:00000000 +"Group"="Debug" +"ImagePath"="system32\drivers\pice.sys" +"Start"=dword:00000004 +"Type"=dword:00000001 + [\Registry\Machine\SYSTEM\CurrentControlSet\Services\Scsiport] "ErrorControl"=dword:00000000 "Group"="SCSI Port"