c1c326aa9010df9eab8356ed51f78789dcf502de
[reactos.git] / reactos / ntoskrnl / include / internal / ldr.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: include/internal/ldr.h
5 * PURPOSE: Header for loader module
6 */
7
8 #ifndef __INCLUDE_INTERNAL_LDR_H
9 #define __INCLUDE_INTERNAL_LDR_H
10
11 #include <pe.h>
12 #include <internal/io.h>
13 #include <ntdll/ldr.h>
14 #include <internal/module.h>
15
16 #define KERNEL_MODULE_NAME L"ntoskrnl.exe"
17 #define HAL_MODULE_NAME L"hal.dll"
18 #define DRIVER_ROOT_NAME L"\\Driver\\"
19 #define FILESYSTEM_ROOT_NAME L"\\FileSystem\\"
20
21
22 extern ULONG_PTR LdrHalBase;
23
24 NTSTATUS
25 LdrLoadInitialProcess(PHANDLE ProcessHandle,
26 PHANDLE ThreadHandle);
27
28 VOID
29 LdrLoadAutoConfigDrivers (
30 VOID
31 );
32 VOID
33 LdrInitModuleManagement (
34 VOID
35 );
36
37 NTSTATUS
38 LdrInitializeBootStartDriver(IN PVOID ModuleLoadBase,
39 IN PCHAR FileName,
40 IN ULONG ModuleLength);
41
42 NTSTATUS
43 LdrpMapSystemDll (
44 HANDLE ProcessHandle,
45 PVOID * LdrStartupAddress
46 );
47 PVOID
48 LdrpGetSystemDllEntryPoint (VOID);
49 PVOID
50 LdrpGetSystemDllApcDispatcher(VOID);
51 PVOID
52 LdrpGetSystemDllExceptionDispatcher(VOID);
53 PVOID
54 LdrpGetSystemDllCallbackDispatcher(VOID);
55 NTSTATUS
56 LdrpMapImage (
57 HANDLE ProcessHandle,
58 HANDLE SectionHandle,
59 PVOID * ImageBase
60 );
61
62
63 NTSTATUS STDCALL
64 LdrGetProcedureAddress (IN PVOID BaseAddress,
65 IN PANSI_STRING Name,
66 IN ULONG Ordinal,
67 OUT PVOID *ProcedureAddress);
68
69 NTSTATUS
70 LdrpLoadImage(PUNICODE_STRING DriverName,
71 PVOID *ModuleBase,
72 PVOID *SectionPointer,
73 PVOID *EntryPoint,
74 PVOID *ExportDirectory);
75
76 NTSTATUS
77 LdrpUnloadImage(PVOID ModuleBase);
78
79 NTSTATUS
80 LdrpLoadAndCallImage(PUNICODE_STRING DriverName);
81
82 NTSTATUS
83 LdrpQueryModuleInformation(PVOID Buffer,
84 ULONG Size,
85 PULONG ReqSize);
86
87 PVOID STDCALL
88 RtlImageDirectoryEntryToData (
89 IN PVOID BaseAddress,
90 IN BOOLEAN ImageLoaded,
91 IN ULONG Directory,
92 OUT PULONG Size);
93 VOID
94 LdrInit1(VOID);
95 VOID
96 LdrInitDebug(PLOADER_MODULE Module, PWCH Name);
97
98 PVOID LdrSafePEProcessModule(
99 PVOID ModuleLoadBase,
100 PVOID DriverBase,
101 PVOID ImportModuleBase,
102 PULONG DriverSize);
103
104 NTSTATUS
105 LdrLoadModule(PUNICODE_STRING Filename,
106 PMODULE_OBJECT *ModuleObject);
107
108 NTSTATUS
109 LdrUnloadModule(PMODULE_OBJECT ModuleObject);
110
111 PMODULE_OBJECT
112 LdrGetModuleObject(PUNICODE_STRING ModuleName);
113
114 NTSTATUS
115 LdrGetAddressInformation(IN PIMAGE_SYMBOL_INFO SymbolInfo,
116 IN ULONG_PTR RelativeAddress,
117 OUT PULONG LineNumber,
118 OUT PCH FileName OPTIONAL,
119 OUT PCH FunctionName OPTIONAL);
120
121
122 #ifdef DBG
123
124 VOID
125 LdrLoadUserModuleSymbols(PLDR_MODULE LdrModule);
126
127 VOID
128 LdrUnloadModuleSymbols(PIMAGE_SYMBOL_INFO SymbolInfo);
129
130 #endif /* DBG */
131
132 #endif /* __INCLUDE_INTERNAL_LDR_H */