:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[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
25 NTSTATUS
26 LdrLoadInitialProcess (
27         VOID
28         );
29 VOID
30 LdrLoadAutoConfigDrivers (
31         VOID
32         );
33 VOID
34 LdrInitModuleManagement (
35         VOID
36         );
37
38 NTSTATUS
39 LdrInitializeBootStartDriver(IN PVOID ModuleLoadBase,
40                              IN PCHAR FileName,
41                              IN ULONG ModuleLength);
42
43 NTSTATUS
44 LdrpMapSystemDll (
45         HANDLE  ProcessHandle,
46         PVOID   * LdrStartupAddress
47         );
48 PVOID
49 LdrpGetSystemDllEntryPoint (VOID);
50 PVOID 
51 LdrpGetSystemDllApcDispatcher(VOID);
52 PVOID 
53 LdrpGetSystemDllExceptionDispatcher(VOID);
54 PVOID 
55 LdrpGetSystemDllCallbackDispatcher(VOID);
56 NTSTATUS
57 LdrpMapImage (
58         HANDLE  ProcessHandle,
59         HANDLE  SectionHandle,
60         PVOID   * ImageBase
61         );
62
63
64 NTSTATUS STDCALL
65 LdrGetProcedureAddress (IN PVOID BaseAddress,
66                         IN PANSI_STRING Name,
67                         IN ULONG Ordinal,
68                         OUT PVOID *ProcedureAddress);
69
70 NTSTATUS
71 LdrpLoadImage(PUNICODE_STRING DriverName,
72               PVOID *ModuleBase,
73               PVOID *SectionPointer,
74               PVOID *EntryPoint,
75               PVOID *ExportDirectory);
76
77 NTSTATUS
78 LdrpUnloadImage(PVOID ModuleBase);
79
80 NTSTATUS
81 LdrpLoadAndCallImage(PUNICODE_STRING DriverName);
82
83 NTSTATUS
84 LdrpQueryModuleInformation(PVOID Buffer,
85                            ULONG Size,
86                            PULONG ReqSize);
87
88 PVOID STDCALL
89 RtlImageDirectoryEntryToData (
90         IN PVOID        BaseAddress,
91         IN BOOLEAN      ImageLoaded,
92         IN ULONG        Directory,
93         OUT PULONG      Size);
94 VOID
95 LdrInit1(VOID);
96 VOID
97 LdrInitDebug(PLOADER_MODULE Module, PWCH Name);
98
99 PVOID LdrSafePEProcessModule(
100         PVOID ModuleLoadBase,
101   PVOID DriverBase,
102         PVOID ImportModuleBase,
103         PULONG DriverSize);
104
105 NTSTATUS
106 LdrLoadModule(PUNICODE_STRING Filename,
107               PMODULE_OBJECT *ModuleObject);
108
109 NTSTATUS
110 LdrUnloadModule(PMODULE_OBJECT ModuleObject);
111
112 PMODULE_OBJECT
113 LdrGetModuleObject(PUNICODE_STRING ModuleName);
114
115 NTSTATUS
116 LdrGetAddressInformation(IN PIMAGE_SYMBOL_INFO  SymbolInfo,
117   IN ULONG_PTR  RelativeAddress,
118   OUT PULONG LineNumber,
119   OUT PCH FileName  OPTIONAL,
120   OUT PCH FunctionName  OPTIONAL);
121
122
123 #ifdef DBG
124
125 VOID
126 LdrLoadUserModuleSymbols(PLDR_MODULE LdrModule);
127
128 VOID
129 LdrUnloadModuleSymbols(PIMAGE_SYMBOL_INFO SymbolInfo);
130
131 #endif /* DBG */
132
133 #endif /* __INCLUDE_INTERNAL_LDR_H */