1 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_LDR_H
2 #define __NTOSKRNL_INCLUDE_INTERNAL_LDR_H
4 #include <ntos/kdbgsyms.h>
7 typedef NTSTATUS STDCALL (*PEPFUNC)(PPEB);
9 /* Type for a DLL's entry point */
11 (* PDLLMAIN_FUNC)(HANDLE hInst,
12 ULONG ul_reason_for_call,
15 typedef struct _LDR_MODULE
17 LIST_ENTRY InLoadOrderModuleList;
18 LIST_ENTRY InMemoryOrderModuleList; // not used
19 LIST_ENTRY InInitializationOrderModuleList; // not used
23 UNICODE_STRING FullDllName;
24 UNICODE_STRING BaseDllName;
32 IMAGE_SYMBOL_INFO SymbolInfo;
34 } LDR_MODULE, *PLDR_MODULE;
36 typedef struct _LDR_SYMBOL_INFO {
37 PLDR_MODULE ModuleObject;
40 ULONG SymbolsBufferLength;
41 PVOID SymbolStringsBuffer;
42 ULONG SymbolStringsBufferLength;
43 } LDR_SYMBOL_INFO, *PLDR_SYMBOL_INFO;
46 #define RVA(m, b) ((ULONG)b + m)
49 typedef struct _MODULE_ENTRY
61 } MODULE_ENTRY, *PMODULE_ENTRY;
63 typedef struct _MODULE_INFORMATION
66 MODULE_ENTRY ModuleEntry[1];
67 } MODULE_INFORMATION, *PMODULE_INFORMATION;
72 LdrpLoadUserModuleSymbols(PLDR_MODULE LdrModule);
76 PEPFUNC LdrPEStartup (PVOID ImageBase,
80 NTSTATUS LdrMapSections(HANDLE ProcessHandle,
83 PIMAGE_NT_HEADERS NTHeaders);
84 NTSTATUS LdrMapNTDllForProcess(HANDLE ProcessHandle,
85 PHANDLE NTDllSectionHandle);
89 LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress);
92 LdrGetDllHandle(IN ULONG Unknown1,
94 IN PUNICODE_STRING DllName,
95 OUT PVOID *BaseAddress);
98 LdrFindEntryForAddress(PVOID Address,
102 LdrGetProcedureAddress(IN PVOID BaseAddress,
103 IN PANSI_STRING Name,
105 OUT PVOID *ProcedureAddress);
108 LdrInitializeThunk(ULONG Unknown1,
114 LdrLoadDll(IN PWSTR SearchPath OPTIONAL,
116 IN PUNICODE_STRING Name,
117 OUT PVOID *BaseAddress OPTIONAL);
120 LdrQueryProcessModuleInformation(IN PMODULE_INFORMATION ModuleInformation OPTIONAL,
121 IN ULONG Size OPTIONAL,
122 OUT PULONG ReturnedSize);
125 LdrShutdownProcess(VOID);
128 LdrShutdownThread(VOID);
131 LdrUnloadDll(IN PVOID BaseAddress);
133 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_LDR_H */