1 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_LDR_H
2 #define __NTOSKRNL_INCLUDE_INTERNAL_LDR_H
4 #include <ntos/kdbgsyms.h>
8 typedef NTSTATUS
STDCALL_FUNC (*PEPFUNC
)(PPEB
);
10 /* Type for a DLL's entry point */
11 typedef BOOL STDCALL_FUNC
12 (* PDLLMAIN_FUNC
)(HANDLE hInst
,
13 ULONG ul_reason_for_call
,
17 #define IMAGE_DLL 0x00000004
18 #define LOAD_IN_PROGRESS 0x00001000
19 #define UNLOAD_IN_PROGRESS 0x00002000
20 #define ENTRY_PROCESSED 0x00004000
21 #define DONT_CALL_FOR_THREAD 0x00040000
22 #define PROCESS_ATTACH_CALLED 0x00080000
23 #define IMAGE_NOT_AT_BASE 0x00200000
25 typedef struct _LDR_MODULE
27 LIST_ENTRY InLoadOrderModuleList
;
28 LIST_ENTRY InMemoryOrderModuleList
; /* not used */
29 LIST_ENTRY InInitializationOrderModuleList
; /* not used */
33 UNICODE_STRING FullDllName
;
34 UNICODE_STRING BaseDllName
;
42 IMAGE_SYMBOL_INFO SymbolInfo
;
44 } LDR_MODULE
, *PLDR_MODULE
;
46 typedef struct _LDR_SYMBOL_INFO
{
47 PLDR_MODULE ModuleObject
;
50 ULONG SymbolsBufferLength
;
51 PVOID SymbolStringsBuffer
;
52 ULONG SymbolStringsBufferLength
;
53 } LDR_SYMBOL_INFO
, *PLDR_SYMBOL_INFO
;
56 #define RVA(m, b) ((ULONG)b + m)
59 typedef struct _MODULE_ENTRY
71 } MODULE_ENTRY
, *PMODULE_ENTRY
;
73 typedef struct _MODULE_INFORMATION
76 MODULE_ENTRY ModuleEntry
[1];
77 } MODULE_INFORMATION
, *PMODULE_INFORMATION
;
82 LdrpLoadUserModuleSymbols(PLDR_MODULE LdrModule
);
86 PEPFUNC
LdrPEStartup (PVOID ImageBase
,
90 NTSTATUS
LdrMapSections(HANDLE ProcessHandle
,
93 PIMAGE_NT_HEADERS NTHeaders
);
94 NTSTATUS
LdrMapNTDllForProcess(HANDLE ProcessHandle
,
95 PHANDLE NTDllSectionHandle
);
99 LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress
);
102 LdrGetDllHandle(IN PWCHAR Path OPTIONAL
,
104 IN PUNICODE_STRING DllName
,
105 OUT PVOID
*BaseAddress
);
108 LdrFindEntryForAddress(IN PVOID Address
,
109 OUT PLDR_MODULE
*Module
);
112 LdrGetProcedureAddress(IN PVOID BaseAddress
,
113 IN PANSI_STRING Name
,
115 OUT PVOID
*ProcedureAddress
);
118 LdrInitializeThunk(ULONG Unknown1
,
124 LdrLoadDll(IN PWSTR SearchPath OPTIONAL
,
126 IN PUNICODE_STRING Name
,
127 OUT PVOID
*BaseAddress OPTIONAL
);
130 LdrQueryImageFileExecutionOptions (IN PUNICODE_STRING SubKey
,
135 OUT PULONG RetunedLength OPTIONAL
);
138 LdrQueryProcessModuleInformation(IN PMODULE_INFORMATION ModuleInformation OPTIONAL
,
139 IN ULONG Size OPTIONAL
,
140 OUT PULONG ReturnedSize
);
143 LdrShutdownProcess(VOID
);
146 LdrShutdownThread(VOID
);
149 LdrUnloadDll(IN PVOID BaseAddress
);
152 LdrVerifyImageMatchesChecksum (IN HANDLE FileHandle
,
157 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_LDR_H */