1 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_LDR_H
2 #define __NTOSKRNL_INCLUDE_INTERNAL_LDR_H
4 #include <ntos/kdbgsyms.h>
8 typedef NTSTATUS STDCALL (*PEPFUNC)(PPEB);
10 /* Type for a DLL's entry point */
12 (* PDLLMAIN_FUNC)(HANDLE hInst,
13 ULONG ul_reason_for_call,
16 typedef struct _LDR_MODULE
18 LIST_ENTRY InLoadOrderModuleList;
19 LIST_ENTRY InMemoryOrderModuleList; // not used
20 LIST_ENTRY InInitializationOrderModuleList; // not used
24 UNICODE_STRING FullDllName;
25 UNICODE_STRING BaseDllName;
33 IMAGE_SYMBOL_INFO SymbolInfo;
35 } LDR_MODULE, *PLDR_MODULE;
37 typedef struct _LDR_SYMBOL_INFO {
38 PLDR_MODULE ModuleObject;
41 ULONG SymbolsBufferLength;
42 PVOID SymbolStringsBuffer;
43 ULONG SymbolStringsBufferLength;
44 } LDR_SYMBOL_INFO, *PLDR_SYMBOL_INFO;
47 #define RVA(m, b) ((ULONG)b + m)
50 typedef struct _MODULE_ENTRY
62 } MODULE_ENTRY, *PMODULE_ENTRY;
64 typedef struct _MODULE_INFORMATION
67 MODULE_ENTRY ModuleEntry[1];
68 } MODULE_INFORMATION, *PMODULE_INFORMATION;
73 LdrpLoadUserModuleSymbols(PLDR_MODULE LdrModule);
77 PEPFUNC LdrPEStartup (PVOID ImageBase,
81 NTSTATUS LdrMapSections(HANDLE ProcessHandle,
84 PIMAGE_NT_HEADERS NTHeaders);
85 NTSTATUS LdrMapNTDllForProcess(HANDLE ProcessHandle,
86 PHANDLE NTDllSectionHandle);
90 LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress);
93 LdrGetDllHandle(IN ULONG Unknown1,
95 IN PUNICODE_STRING DllName,
96 OUT PVOID *BaseAddress);
99 LdrFindEntryForAddress(PVOID Address,
100 PLDR_MODULE *Module);
103 LdrGetProcedureAddress(IN PVOID BaseAddress,
104 IN PANSI_STRING Name,
106 OUT PVOID *ProcedureAddress);
109 LdrInitializeThunk(ULONG Unknown1,
115 LdrLoadDll(IN PWSTR SearchPath OPTIONAL,
117 IN PUNICODE_STRING Name,
118 OUT PVOID *BaseAddress OPTIONAL);
121 LdrQueryProcessModuleInformation(IN PMODULE_INFORMATION ModuleInformation OPTIONAL,
122 IN ULONG Size OPTIONAL,
123 OUT PULONG ReturnedSize);
126 LdrShutdownProcess(VOID);
129 LdrShutdownThread(VOID);
132 LdrUnloadDll(IN PVOID BaseAddress);
134 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_LDR_H */