update for HEAD-2003091401
[reactos.git] / include / ntdll / ldr.h
1 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_LDR_H
2 #define __NTOSKRNL_INCLUDE_INTERNAL_LDR_H
3
4 #include <ntos/kdbgsyms.h>
5 #include <roscfg.h>
6 #include <napi/teb.h>
7
8 typedef NTSTATUS STDCALL (*PEPFUNC)(PPEB);
9
10 /* Type for a DLL's entry point */
11 typedef BOOL STDCALL
12 (* PDLLMAIN_FUNC)(HANDLE hInst,
13                   ULONG ul_reason_for_call,
14                   LPVOID lpReserved);
15
16 typedef struct _LDR_MODULE
17 {
18    LIST_ENTRY     InLoadOrderModuleList;
19    LIST_ENTRY     InMemoryOrderModuleList;              /* not used */
20    LIST_ENTRY     InInitializationOrderModuleList;      /* not used */
21    PVOID          BaseAddress;
22    ULONG          EntryPoint;
23    ULONG          SizeOfImage;
24    UNICODE_STRING FullDllName;
25    UNICODE_STRING BaseDllName;
26    ULONG          Flags;
27    SHORT          LoadCount;
28    SHORT          TlsIndex;
29    HANDLE         SectionHandle;
30    ULONG          CheckSum;
31    ULONG          TimeDateStamp;
32 #ifdef KDBG
33   IMAGE_SYMBOL_INFO SymbolInfo;
34 #endif /* KDBG */
35 } LDR_MODULE, *PLDR_MODULE;
36
37 typedef struct _LDR_SYMBOL_INFO {
38   PLDR_MODULE ModuleObject;
39   ULONG_PTR ImageBase;
40   PVOID SymbolsBuffer;
41   ULONG SymbolsBufferLength;
42   PVOID SymbolStringsBuffer;
43   ULONG SymbolStringsBufferLength;
44 } LDR_SYMBOL_INFO, *PLDR_SYMBOL_INFO;
45
46
47 #define RVA(m, b) ((ULONG)b + m)
48
49
50 typedef struct _MODULE_ENTRY
51 {
52   ULONG Unknown0;
53   ULONG Unknown1;
54   PVOID BaseAddress;
55   ULONG SizeOfImage;
56   ULONG Flags;
57   USHORT Unknown2;
58   USHORT Unknown3;
59   SHORT LoadCount;
60   USHORT PathLength;
61   CHAR ModuleName[256];
62 } MODULE_ENTRY, *PMODULE_ENTRY;
63
64 typedef struct _MODULE_INFORMATION
65 {
66   ULONG ModuleCount;
67   MODULE_ENTRY ModuleEntry[1];
68 } MODULE_INFORMATION, *PMODULE_INFORMATION;
69
70 #if defined(KDBG) || defined(DBG)
71
72 VOID
73 LdrpLoadUserModuleSymbols(PLDR_MODULE LdrModule);
74
75 #endif
76
77 PEPFUNC LdrPEStartup (PVOID  ImageBase,
78                       HANDLE SectionHandle,
79                       PLDR_MODULE* Module,
80                       PWSTR FullDosName);
81 NTSTATUS LdrMapSections(HANDLE ProcessHandle,
82                         PVOID ImageBase,
83                         HANDLE SectionHandle,
84                         PIMAGE_NT_HEADERS NTHeaders);
85 NTSTATUS LdrMapNTDllForProcess(HANDLE ProcessHandle,
86                                PHANDLE NTDllSectionHandle);
87
88
89 NTSTATUS STDCALL
90 LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress);
91
92 NTSTATUS STDCALL
93 LdrGetDllHandle(IN ULONG Unknown1,
94                 IN ULONG Unknown2,
95                 IN PUNICODE_STRING DllName,
96                 OUT PVOID *BaseAddress);
97
98 NTSTATUS STDCALL
99 LdrFindEntryForAddress(IN PVOID Address,
100                        OUT PLDR_MODULE *Module);
101
102 NTSTATUS STDCALL
103 LdrGetProcedureAddress(IN PVOID BaseAddress,
104                        IN PANSI_STRING Name,
105                        IN ULONG Ordinal,
106                        OUT PVOID *ProcedureAddress);
107
108 VOID STDCALL
109 LdrInitializeThunk(ULONG Unknown1,
110                    ULONG Unknown2,
111                    ULONG Unknown3,
112                    ULONG Unknown4);
113
114 NTSTATUS STDCALL
115 LdrLoadDll(IN PWSTR SearchPath OPTIONAL,
116            IN ULONG LoadFlags,
117            IN PUNICODE_STRING Name,
118            OUT PVOID *BaseAddress OPTIONAL);
119
120 NTSTATUS STDCALL
121 LdrQueryImageFileExecutionOptions (IN PUNICODE_STRING SubKey,
122                                    IN PCWSTR ValueName,
123                                    IN ULONG ValueSize,
124                                    OUT PVOID Buffer,
125                                    IN ULONG BufferSize,
126                                    OUT PULONG RetunedLength OPTIONAL);
127
128 NTSTATUS STDCALL
129 LdrQueryProcessModuleInformation(IN PMODULE_INFORMATION ModuleInformation OPTIONAL,
130                                  IN ULONG Size OPTIONAL,
131                                  OUT PULONG ReturnedSize);
132
133 NTSTATUS STDCALL
134 LdrShutdownProcess(VOID);
135
136 NTSTATUS STDCALL
137 LdrShutdownThread(VOID);
138
139 NTSTATUS STDCALL
140 LdrUnloadDll(IN PVOID BaseAddress);
141
142 NTSTATUS STDCALL
143 LdrVerifyImageMatchesChecksum (IN HANDLE FileHandle,
144                                ULONG Unknown1,
145                                ULONG Unknown2,
146                                ULONG Unknown3);
147
148 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_LDR_H */
149
150 /* EOF */