95feea6a3d2450f94da3935b6eaced775bd563c8
[reactos.git] / 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 PVOID
56 LdrpGetSystemDllRaiseExceptionDispatcher(VOID);
57 NTSTATUS
58 LdrpMapImage (
59         HANDLE  ProcessHandle,
60         HANDLE  SectionHandle,
61         PVOID   * ImageBase
62         );
63
64
65 NTSTATUS STDCALL
66 LdrGetProcedureAddress (IN PVOID BaseAddress,
67                         IN PANSI_STRING Name,
68                         IN ULONG Ordinal,
69                         OUT PVOID *ProcedureAddress);
70
71 NTSTATUS
72 LdrpLoadImage(PUNICODE_STRING DriverName,
73               PVOID *ModuleBase,
74               PVOID *SectionPointer,
75               PVOID *EntryPoint,
76               PVOID *ExportDirectory);
77
78 NTSTATUS
79 LdrpUnloadImage(PVOID ModuleBase);
80
81 NTSTATUS
82 LdrpLoadAndCallImage(PUNICODE_STRING DriverName);
83
84 NTSTATUS
85 LdrpQueryModuleInformation(PVOID Buffer,
86                            ULONG Size,
87                            PULONG ReqSize);
88
89 PVOID STDCALL
90 RtlImageDirectoryEntryToData (
91         IN PVOID        BaseAddress,
92         IN BOOLEAN      ImageLoaded,
93         IN ULONG        Directory,
94         OUT PULONG      Size);
95 VOID
96 LdrInit1(VOID);
97 VOID
98 LdrInitDebug(PLOADER_MODULE Module, PWCH Name);
99
100 PVOID LdrSafePEProcessModule(
101         PVOID ModuleLoadBase,
102   PVOID DriverBase,
103         PVOID ImportModuleBase,
104         PULONG DriverSize);
105
106 NTSTATUS
107 LdrLoadModule(PUNICODE_STRING Filename,
108               PMODULE_OBJECT *ModuleObject);
109
110 NTSTATUS
111 LdrUnloadModule(PMODULE_OBJECT ModuleObject);
112
113 PMODULE_OBJECT
114 LdrGetModuleObject(PUNICODE_STRING ModuleName);
115
116 NTSTATUS
117 LdrGetAddressInformation(IN PIMAGE_SYMBOL_INFO  SymbolInfo,
118   IN ULONG_PTR  RelativeAddress,
119   OUT PULONG LineNumber,
120   OUT PCH FileName  OPTIONAL,
121   OUT PCH FunctionName  OPTIONAL);
122
123
124 #ifdef DBG
125
126 VOID
127 LdrLoadUserModuleSymbols(PLDR_MODULE LdrModule);
128
129 VOID
130 LdrUnloadModuleSymbols(PIMAGE_SYMBOL_INFO SymbolInfo);
131
132 #endif /* DBG */
133
134 #endif /* __INCLUDE_INTERNAL_LDR_H */