mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Fixed loading of symbol files.
Implemented automatic loading of PICE. svn path=/trunk/; revision=3102
This commit is contained in:
parent
56deabe577
commit
d783d4d686
7 changed files with 124 additions and 449 deletions
|
@ -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,
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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();
|
||||
|
||||
/*
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue