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 */