mirror of
https://github.com/reactos/reactos.git
synced 2025-07-27 20:11:58 +00:00
use tags for pool allocations, and reformat code
svn path=/trunk/; revision=14545
This commit is contained in:
parent
d57bccaddf
commit
dac8f53fe5
1 changed files with 1270 additions and 1238 deletions
|
@ -41,7 +41,10 @@ STATIC MODULE_TEXT_SECTION NtoskrnlTextSection;
|
|||
STATIC MODULE_TEXT_SECTION LdrHalTextSection;
|
||||
ULONG_PTR LdrHalBase;
|
||||
|
||||
#define TAG_DRIVER_MEM TAG('D', 'R', 'V', 'M')
|
||||
#define TAG_DRIVER_MEM TAG('D', 'R', 'V', 'M') /* drvm */
|
||||
#define TAG_MODULE_OBJECT TAG('k', 'l', 'm', 'o') /* klmo - kernel ldr module object */
|
||||
#define TAG_LDR_WSTR TAG('k', 'l', 'w', 's') /* klws - kernel ldr wide string */
|
||||
#define TAG_MODULE_TEXT_SECTION TAG('k', 'l', 'm', 't') /* klmt - kernel ldr module text */
|
||||
|
||||
#ifndef HIWORD
|
||||
#define HIWORD(X) ((WORD) (((DWORD) (X) >> 16) & 0xFFFF))
|
||||
|
@ -53,25 +56,32 @@ ULONG_PTR LdrHalBase;
|
|||
/* FORWARD DECLARATIONS ******************************************************/
|
||||
|
||||
NTSTATUS
|
||||
LdrProcessModule(PVOID ModuleLoadBase,
|
||||
LdrProcessModule (
|
||||
PVOID ModuleLoadBase,
|
||||
PUNICODE_STRING ModuleName,
|
||||
PMODULE_OBJECT *ModuleObject );
|
||||
|
||||
static VOID
|
||||
LdrpBuildModuleBaseName(PUNICODE_STRING BaseName,
|
||||
LdrpBuildModuleBaseName (
|
||||
PUNICODE_STRING BaseName,
|
||||
PUNICODE_STRING FullName );
|
||||
|
||||
static LONG
|
||||
LdrpCompareModuleNames(IN PUNICODE_STRING String1,
|
||||
LdrpCompareModuleNames (
|
||||
IN PUNICODE_STRING String1,
|
||||
IN PUNICODE_STRING String2 );
|
||||
|
||||
|
||||
/* PE Driver load support */
|
||||
static NTSTATUS LdrPEProcessModule(PVOID ModuleLoadBase,
|
||||
static NTSTATUS
|
||||
LdrPEProcessModule (
|
||||
PVOID ModuleLoadBase,
|
||||
PUNICODE_STRING FileName,
|
||||
PMODULE_OBJECT *ModuleObject );
|
||||
|
||||
static PVOID
|
||||
LdrPEGetExportByName(PVOID BaseAddress,
|
||||
LdrPEGetExportByName (
|
||||
PVOID BaseAddress,
|
||||
PUCHAR SymbolName,
|
||||
WORD Hint );
|
||||
|
||||
|
@ -79,7 +89,8 @@ static PVOID
|
|||
LdrPEFixupForward ( PCHAR ForwardName );
|
||||
|
||||
static NTSTATUS
|
||||
LdrPEPerformRelocations(PVOID DriverBase,
|
||||
LdrPEPerformRelocations (
|
||||
PVOID DriverBase,
|
||||
ULONG DriverSize );
|
||||
|
||||
static NTSTATUS
|
||||
|
@ -130,8 +141,8 @@ LdrInit1(VOID)
|
|||
NtHeader = RtlImageNtHeader((PVOID)KERNEL_BASE);
|
||||
SectionList = IMAGE_FIRST_SECTION(NtHeader);
|
||||
NtoskrnlTextSection.Base = KERNEL_BASE;
|
||||
NtoskrnlTextSection.Length = SectionList[0].Misc.VirtualSize +
|
||||
SectionList[0].VirtualAddress;
|
||||
NtoskrnlTextSection.Length = SectionList[0].Misc.VirtualSize
|
||||
+ SectionList[0].VirtualAddress;
|
||||
NtoskrnlTextSection.Name = KERNEL_MODULE_NAME;
|
||||
NtoskrnlTextSection.OptionalHeader = OPTHDROFFSET(KERNEL_BASE);
|
||||
InsertTailList(&ModuleTextListHead, &NtoskrnlTextSection.ListEntry);
|
||||
|
@ -141,8 +152,8 @@ LdrInit1(VOID)
|
|||
NtHeader = RtlImageNtHeader((PVOID)LdrHalBase);
|
||||
SectionList = IMAGE_FIRST_SECTION(NtHeader);
|
||||
LdrHalTextSection.Base = LdrHalBase;
|
||||
LdrHalTextSection.Length = SectionList[0].Misc.VirtualSize +
|
||||
SectionList[0].VirtualAddress;
|
||||
LdrHalTextSection.Length = SectionList[0].Misc.VirtualSize
|
||||
+ SectionList[0].VirtualAddress;
|
||||
LdrHalTextSection.Name = HAL_MODULE_NAME;
|
||||
LdrHalTextSection.OptionalHeader = OPTHDROFFSET(LdrHalBase);
|
||||
InsertTailList(&ModuleTextListHead, &LdrHalTextSection.ListEntry);
|
||||
|
@ -201,7 +212,8 @@ LdrInitModuleManagement(VOID)
|
|||
}
|
||||
|
||||
NTSTATUS
|
||||
LdrpLoadImage(PUNICODE_STRING DriverName,
|
||||
LdrpLoadImage (
|
||||
PUNICODE_STRING DriverName,
|
||||
PVOID *ModuleBase,
|
||||
PVOID *SectionPointer,
|
||||
PVOID *EntryPoint,
|
||||
|
@ -275,7 +287,8 @@ LdrpLoadAndCallImage(PUNICODE_STRING ModuleName)
|
|||
|
||||
|
||||
NTSTATUS
|
||||
LdrLoadModule(PUNICODE_STRING Filename,
|
||||
LdrLoadModule(
|
||||
PUNICODE_STRING Filename,
|
||||
PMODULE_OBJECT *ModuleObject )
|
||||
{
|
||||
PVOID ModuleLoadBase;
|
||||
|
@ -410,7 +423,8 @@ LdrUnloadModule(PMODULE_OBJECT ModuleObject)
|
|||
|
||||
|
||||
NTSTATUS
|
||||
LdrProcessModule(PVOID ModuleLoadBase,
|
||||
LdrProcessModule(
|
||||
PVOID ModuleLoadBase,
|
||||
PUNICODE_STRING ModuleName,
|
||||
PMODULE_OBJECT *ModuleObject )
|
||||
{
|
||||
|
@ -430,7 +444,8 @@ LdrProcessModule(PVOID ModuleLoadBase,
|
|||
}
|
||||
|
||||
NTSTATUS
|
||||
LdrpQueryModuleInformation(PVOID Buffer,
|
||||
LdrpQueryModuleInformation (
|
||||
PVOID Buffer,
|
||||
ULONG Size,
|
||||
PULONG ReqSize )
|
||||
{
|
||||
|
@ -511,7 +526,8 @@ LdrpQueryModuleInformation(PVOID Buffer,
|
|||
|
||||
|
||||
static VOID
|
||||
LdrpBuildModuleBaseName(PUNICODE_STRING BaseName,
|
||||
LdrpBuildModuleBaseName (
|
||||
PUNICODE_STRING BaseName,
|
||||
PUNICODE_STRING FullName )
|
||||
{
|
||||
PWCHAR p;
|
||||
|
@ -536,7 +552,8 @@ LdrpBuildModuleBaseName(PUNICODE_STRING BaseName,
|
|||
|
||||
|
||||
static LONG
|
||||
LdrpCompareModuleNames(IN PUNICODE_STRING String1,
|
||||
LdrpCompareModuleNames (
|
||||
IN PUNICODE_STRING String1,
|
||||
IN PUNICODE_STRING String2 )
|
||||
{
|
||||
ULONG len1, len2, i;
|
||||
|
@ -644,7 +661,8 @@ LdrGetModuleObject(PUNICODE_STRING ModuleName)
|
|||
/* ---------------------------------------------- PE Module support */
|
||||
|
||||
static ULONG
|
||||
LdrLookupPageProtection(PVOID PageStart,
|
||||
LdrLookupPageProtection (
|
||||
PVOID PageStart,
|
||||
PVOID DriverBase,
|
||||
PIMAGE_FILE_HEADER PEFileHeader,
|
||||
PIMAGE_SECTION_HEADER PESectionHeaders )
|
||||
|
@ -696,7 +714,8 @@ LdrLookupPageProtection(PVOID PageStart,
|
|||
}
|
||||
|
||||
static NTSTATUS
|
||||
LdrPEProcessModule(PVOID ModuleLoadBase,
|
||||
LdrPEProcessModule(
|
||||
PVOID ModuleLoadBase,
|
||||
PUNICODE_STRING FileName,
|
||||
PMODULE_OBJECT *ModuleObject )
|
||||
{
|
||||
|
@ -804,7 +823,8 @@ LdrPEProcessModule(PVOID ModuleLoadBase,
|
|||
}
|
||||
|
||||
/* Create the module */
|
||||
CreatedModuleObject = ExAllocatePool(NonPagedPool, sizeof(MODULE_OBJECT));
|
||||
CreatedModuleObject = ExAllocatePoolWithTag (
|
||||
NonPagedPool, sizeof(MODULE_OBJECT), TAG_MODULE_OBJECT );
|
||||
if (CreatedModuleObject == NULL)
|
||||
{
|
||||
// MmFreeSection(DriverBase);
|
||||
|
@ -819,7 +839,8 @@ LdrPEProcessModule(PVOID ModuleLoadBase,
|
|||
|
||||
CreatedModuleObject->FullName.Length = 0;
|
||||
CreatedModuleObject->FullName.MaximumLength = FileName->Length + sizeof(UNICODE_NULL);
|
||||
CreatedModuleObject->FullName.Buffer = ExAllocatePool(PagedPool, CreatedModuleObject->FullName.MaximumLength);
|
||||
CreatedModuleObject->FullName.Buffer =
|
||||
ExAllocatePoolWithTag(PagedPool, CreatedModuleObject->FullName.MaximumLength, TAG_LDR_WSTR);
|
||||
if (CreatedModuleObject->FullName.Buffer == NULL)
|
||||
{
|
||||
ExFreePool(CreatedModuleObject);
|
||||
|
@ -932,14 +953,18 @@ LdrPEProcessModule(PVOID ModuleLoadBase,
|
|||
KeReleaseSpinLock(&ModuleListLock, Irql);
|
||||
|
||||
|
||||
ModuleTextSection = ExAllocatePool(NonPagedPool,
|
||||
sizeof(MODULE_TEXT_SECTION));
|
||||
ModuleTextSection = ExAllocatePoolWithTag (
|
||||
NonPagedPool,
|
||||
sizeof(MODULE_TEXT_SECTION),
|
||||
TAG_MODULE_TEXT_SECTION );
|
||||
ASSERT(ModuleTextSection);
|
||||
RtlZeroMemory(ModuleTextSection, sizeof(MODULE_TEXT_SECTION));
|
||||
ModuleTextSection->Base = (ULONG)DriverBase;
|
||||
ModuleTextSection->Length = DriverSize;
|
||||
ModuleTextSection->Name = ExAllocatePool(NonPagedPool,
|
||||
(CreatedModuleObject->BaseName.Length + 1) * sizeof(WCHAR));
|
||||
ModuleTextSection->Name = ExAllocatePoolWithTag (
|
||||
NonPagedPool,
|
||||
(CreatedModuleObject->BaseName.Length + 1) * sizeof(WCHAR),
|
||||
TAG_LDR_WSTR );
|
||||
RtlCopyMemory(ModuleTextSection->Name,
|
||||
CreatedModuleObject->BaseName.Buffer,
|
||||
CreatedModuleObject->BaseName.Length);
|
||||
|
@ -965,7 +990,8 @@ LdrPEProcessModule(PVOID ModuleLoadBase,
|
|||
|
||||
|
||||
PVOID INIT_FUNCTION
|
||||
LdrSafePEProcessModule(PVOID ModuleLoadBase,
|
||||
LdrSafePEProcessModule (
|
||||
PVOID ModuleLoadBase,
|
||||
PVOID DriverBase,
|
||||
PVOID ImportModuleBase,
|
||||
PULONG DriverSize)
|
||||
|
@ -1153,7 +1179,8 @@ LdrPEFixupForward(PCHAR ForwardName)
|
|||
}
|
||||
|
||||
static NTSTATUS
|
||||
LdrPEPerformRelocations(PVOID DriverBase,
|
||||
LdrPEPerformRelocations (
|
||||
PVOID DriverBase,
|
||||
ULONG DriverSize)
|
||||
{
|
||||
PIMAGE_NT_HEADERS NtHeaders;
|
||||
|
@ -1249,7 +1276,8 @@ LdrPEPerformRelocations(PVOID DriverBase,
|
|||
}
|
||||
|
||||
static NTSTATUS
|
||||
LdrPEGetOrLoadModule(PMODULE_OBJECT Module,
|
||||
LdrPEGetOrLoadModule (
|
||||
PMODULE_OBJECT Module,
|
||||
PCHAR ImportedName,
|
||||
PMODULE_OBJECT* ImportedModule)
|
||||
{
|
||||
|
@ -1321,7 +1349,8 @@ LdrPEGetOrLoadModule(PMODULE_OBJECT Module,
|
|||
}
|
||||
|
||||
static PVOID
|
||||
LdrPEGetExportByName(PVOID BaseAddress,
|
||||
LdrPEGetExportByName (
|
||||
PVOID BaseAddress,
|
||||
PUCHAR SymbolName,
|
||||
WORD Hint )
|
||||
{
|
||||
|
@ -1470,7 +1499,8 @@ LdrPEGetExportByName(PVOID BaseAddress,
|
|||
}
|
||||
|
||||
static PVOID
|
||||
LdrPEGetExportByOrdinal (PVOID BaseAddress,
|
||||
LdrPEGetExportByOrdinal (
|
||||
PVOID BaseAddress,
|
||||
ULONG Ordinal )
|
||||
{
|
||||
PIMAGE_EXPORT_DIRECTORY ExportDir;
|
||||
|
@ -1478,7 +1508,8 @@ LdrPEGetExportByOrdinal (PVOID BaseAddress,
|
|||
PDWORD * ExFunctions;
|
||||
PVOID Function;
|
||||
|
||||
ExportDir = (PIMAGE_EXPORT_DIRECTORY)RtlImageDirectoryEntryToData (BaseAddress,
|
||||
ExportDir = (PIMAGE_EXPORT_DIRECTORY)RtlImageDirectoryEntryToData (
|
||||
BaseAddress,
|
||||
TRUE,
|
||||
IMAGE_DIRECTORY_ENTRY_EXPORT,
|
||||
&ExportDirSize);
|
||||
|
@ -1504,7 +1535,8 @@ LdrPEGetExportByOrdinal (PVOID BaseAddress,
|
|||
}
|
||||
|
||||
static NTSTATUS
|
||||
LdrPEProcessImportDirectoryEntry(PVOID DriverBase,
|
||||
LdrPEProcessImportDirectoryEntry(
|
||||
PVOID DriverBase,
|
||||
PMODULE_OBJECT ImportedModule,
|
||||
PIMAGE_IMPORT_DESCRIPTOR ImportModuleDirectory )
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue