ReactOS 0.4.15-dev-7942-gd23573b
ntdllp.h
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
4 * FILE: dll/ntdll/include/ntdllp.h
5 * PURPOSE: Native Library Internal Header
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
7 */
8
9#pragma once
10
11#define LDR_HASH_TABLE_ENTRIES 32
12#define LDR_GET_HASH_ENTRY(x) (RtlUpcaseUnicodeChar((x)) & (LDR_HASH_TABLE_ENTRIES - 1))
13
14/* LdrpUpdateLoadCount2 flags */
15#define LDRP_UPDATE_REFCOUNT 0x01
16#define LDRP_UPDATE_DEREFCOUNT 0x02
17#define LDRP_UPDATE_PIN 0x03
18
19/* Loader flags */
20#define IMAGE_LOADER_FLAGS_COMPLUS 0x00000001
21#define IMAGE_LOADER_FLAGS_SYSTEM_GLOBAL 0x01000000
22
23/* Page heap flags */
24#define DPH_FLAG_DLL_NOTIFY 0x40
25
26typedef struct _LDRP_TLS_DATA
27{
31
32typedef
36 _In_ PCWSTR DllName,
38 _Inout_opt_ PULONG DllCharacteristics,
40 _Outptr_ PWSTR* EffectiveDllPath);
41
42/* Global data */
45extern PVOID LdrpHeap;
47extern BOOLEAN ShowSnaps;
69
70/* ldrinit.c */
82
83/* ldrpe.c */
86LdrpSnapThunk(IN PVOID ExportBase,
87 IN PVOID ImportBase,
88 IN PIMAGE_THUNK_DATA OriginalThunk,
90 IN PIMAGE_EXPORT_DIRECTORY ExportEntry,
91 IN ULONG ExportSize,
93 IN LPSTR DllName);
94
97 IN PLDR_DATA_TABLE_ENTRY LdrEntry);
98
99
100/* ldrutils.c */
102NTAPI
106 _In_opt_ _When_(Name == NULL, _In_range_(>, 0)) ULONG Ordinal,
107 _Out_ PVOID *ProcedureAddress,
108 _In_ BOOLEAN ExecuteInit);
109
112
115
117LdrpLoadDll(IN BOOLEAN Redirected,
119 IN PULONG DllCharacteristics OPTIONAL,
120 IN PUNICODE_STRING DllName,
122 IN BOOLEAN CallInit);
123
126 IN ULONG Flags);
127
130
132NTAPI
133LdrpSetProtection(PVOID ViewBase,
134 BOOLEAN Restore);
135
137NTAPI
139 OUT PLDR_DATA_TABLE_ENTRY *LdrEntry);
140
143 IN PUNICODE_STRING DllName,
145 IN BOOLEAN RedirectedDll,
146 OUT PLDR_DATA_TABLE_ENTRY *LdrEntry);
147
150 IN PWSTR DllPath2,
151 IN PWSTR DllName OPTIONAL,
152 IN PULONG DllCharacteristics,
154 IN BOOLEAN Redirect,
155 OUT PLDR_DATA_TABLE_ENTRY *DataTableEntry);
156
159
162
165
168
169VOID
170NTAPI
172 IN PUNICODE_STRING ProcessImage,
173 IN PVOID pShimData);
174
177
178/* verifier.c */
179
182 IN PPEB Peb,
183 IN BOOLEAN SystemWide,
184 IN BOOLEAN ReadAdvancedOptions);
185
188
191
194
197
198
199/* FIXME: Cleanup this mess */
202 PVOID ImageBase,
203 HANDLE SectionHandle,
204 PIMAGE_NT_HEADERS NTHeaders);
206 PHANDLE NTDllSectionHandle);
207ULONG
209
211NTAPI
213 IN LPSTR ImportName,
214 OUT PLDR_DATA_TABLE_ENTRY *DataTableEntry,
215 OUT PBOOLEAN Existing);
216
217VOID
218NTAPI
220
221
222/* path.c */
224NTAPI
227);
228
229VOID
230NTAPI
232 VOID);
233
234/* EOF */
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
struct _PEB * PPEB
#define NULL
Definition: types.h:112
#define NTSTATUS
Definition: precomp.h:21
PPEB Peb
Definition: dllmain.c:27
struct tagCallbackData CallbackData
Definition: fltkernel.h:2090
Status
Definition: gdiplustypes.h:25
BOOLEAN(NTAPI * PDLL_INIT_ROUTINE)(_In_ PVOID DllHandle, _In_ ULONG Reason, _In_opt_ PCONTEXT Context)
Definition: ldrtypes.h:254
VOID NTAPI LdrpUnloadShimEngine()
Definition: ldrutils.c:2803
VOID NTAPI LdrpGetShimEngineInterface()
Definition: ldrutils.c:2718
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
Definition: env.c:47
static const char const char * DllPath
Definition: image.c:34
static const char * ImageName
Definition: image.c:34
#define _Notnull_
Definition: ms_sal.h:658
#define _Outptr_
Definition: ms_sal.h:427
#define _Inout_opt_
Definition: ms_sal.h:379
#define _Out_
Definition: ms_sal.h:345
#define _When_(expr, annos)
Definition: ms_sal.h:254
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
#define _In_range_(lb, ub)
Definition: ms_sal.h:571
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
Definition: ndis.h:4715
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:403
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
Definition: mmfuncs.h:404
_In_opt_ ULONG Base
Definition: rtlfuncs.h:2439
BOOLEAN LdrpInLdrInit
Definition: ldrinit.c:30
VOID NTAPI LdrpCallTlsInitializers(IN PLDR_DATA_TABLE_ENTRY LdrEntry, IN ULONG Reason)
Definition: ldrutils.c:473
NTSTATUS NTAPI LdrpInitializeApplicationVerifierPackage(IN HANDLE KeyHandle, IN PPEB Peb, IN BOOLEAN SystemWide, IN BOOLEAN ReadAdvancedOptions)
BOOLEAN NTAPI RtlDoesFileExists_UStr(IN PUNICODE_STRING FileName)
Definition: path.c:1503
ULONG LdrpGetResidentSize(PIMAGE_NT_HEADERS NTHeaders)
BOOLEAN LdrpShutdownInProgress
Definition: ldrinit.c:34
VOID NTAPI LdrpFreeUnicodeString(PUNICODE_STRING String)
PVOID g_pfnSE_InstallBeforeInit
Definition: ldrutils.c:25
NTSTATUS NTAPI LdrpMapDll(IN PWSTR SearchPath OPTIONAL, IN PWSTR DllPath2, IN PWSTR DllName OPTIONAL, IN PULONG DllCharacteristics, IN BOOLEAN Static, IN BOOLEAN Redirect, OUT PLDR_DATA_TABLE_ENTRY *DataTableEntry)
Definition: ldrutils.c:1023
PVOID g_pfnSE_InstallAfterInit
Definition: ldrutils.c:26
UNICODE_STRING LdrpDefaultPath
Definition: ldrinit.c:65
VOID NTAPI LdrpLoadShimEngine(IN PWSTR ImageName, IN PUNICODE_STRING ProcessImage, IN PVOID pShimData)
Definition: ldrutils.c:2778
BOOLEAN NTAPI LdrpCheckForLoadedDllHandle(IN PVOID Base, OUT PLDR_DATA_TABLE_ENTRY *LdrEntry)
Definition: ldrutils.c:1621
NTSTATUS NTAPI LdrpLoadDll(IN BOOLEAN Redirected, IN PWSTR DllPath OPTIONAL, IN PULONG DllCharacteristics OPTIONAL, IN PUNICODE_STRING DllName, OUT PVOID *BaseAddress, IN BOOLEAN CallInit)
Definition: ldrutils.c:2435
ULONG RtlpDphGlobalFlags
Definition: heappage.c:108
PVOID g_pShimEngineModule
Definition: ldrutils.c:22
VOID NTAPI LdrpFreeTls(VOID)
Definition: ldrinit.c:1384
NTSTATUS NTAPI LdrpWalkImportDescriptor(IN LPWSTR DllPath OPTIONAL, IN PLDR_DATA_TABLE_ENTRY LdrEntry)
Definition: ldrpe.c:670
PVOID g_pfnSE_ProcessDying
Definition: ldrutils.c:27
NTSTATUS NTAPI AVrfInitializeVerifier(VOID)
Definition: verifier.c:612
ULONG LdrpNumberOfProcessors
Definition: ldrinit.c:55
VOID NTAPI LdrpUpdateLoadCount2(IN PLDR_DATA_TABLE_ENTRY LdrEntry, IN ULONG Flags)
Definition: ldrutils.c:460
PVOID LdrpHeap
Definition: ldrinit.c:59
UNICODE_STRING LdrApiDefaultExtension
Definition: ldrapi.c:22
#define LDR_HASH_TABLE_ENTRIES
Definition: ntdllp.h:11
PLDR_DATA_TABLE_ENTRY LdrpCurrentDllInitializer
Definition: ldrinit.c:43
ULONG LdrpActiveUnloadCount
Definition: ldrinit.c:84
NTSTATUS(NTAPI * PEPFUNC)(PPEB)
Definition: ntdllp.h:200
NTSTATUS LdrMapNTDllForProcess(HANDLE ProcessHandle, PHANDLE NTDllSectionHandle)
VOID NTAPI LdrpFinalizeAndDeallocateDataTableEntry(IN PLDR_DATA_TABLE_ENTRY Entry)
Definition: ldrutils.c:1598
NTSTATUS(NTAPI * PLDR_APP_COMPAT_DLL_REDIRECTION_CALLBACK_FUNCTION)(_In_ ULONG Flags, _In_ PCWSTR DllName, _In_ PCWSTR DllPath OPTIONAL, _Inout_opt_ PULONG DllCharacteristics, _In_ PVOID CallbackData, _Outptr_ PWSTR *EffectiveDllPath)
Definition: ntdllp.h:34
PLDR_DATA_TABLE_ENTRY LdrpGetModuleHandleCache
Definition: ldrutils.c:19
NTSTATUS NTAPI LdrpGetProcedureAddress(_In_ PVOID BaseAddress, _In_opt_ _When_(Ordinal==0, _Notnull_) PANSI_STRING Name, _In_opt_ _When_(Name==NULL, _In_range_(>, 0)) ULONG Ordinal, _Out_ PVOID *ProcedureAddress, _In_ BOOLEAN ExecuteInit)
Definition: ldrutils.c:2252
NTSTATUS NTAPI LdrpLoadImportModule(IN PWSTR DllPath OPTIONAL, IN LPSTR ImportName, OUT PLDR_DATA_TABLE_ENTRY *DataTableEntry, OUT PBOOLEAN Existing)
Definition: ldrpe.c:808
VOID NTAPI LdrpInsertMemoryTableEntry(IN PLDR_DATA_TABLE_ENTRY LdrEntry)
Definition: ldrutils.c:1582
ULONG LdrpFatalHardErrorCount
Definition: ldrinit.c:83
NTSTATUS LdrMapSections(HANDLE ProcessHandle, PVOID ImageBase, HANDLE SectionHandle, PIMAGE_NT_HEADERS NTHeaders)
NTSTATUS NTAPI LdrpSetProtection(PVOID ViewBase, BOOLEAN Restore)
Definition: ldrutils.c:947
struct _LDRP_TLS_DATA * PLDRP_TLS_DATA
VOID NTAPI LdrpValidateImageForMp(IN PLDR_DATA_TABLE_ENTRY LdrDataTableEntry)
Definition: ldrinit.c:1539
BOOLEAN NTAPI LdrpCheckForLoadedDll(IN PWSTR DllPath, IN PUNICODE_STRING DllName, IN BOOLEAN Flag, IN BOOLEAN RedirectedDll, OUT PLDR_DATA_TABLE_ENTRY *LdrEntry)
Definition: ldrutils.c:1979
BOOLEAN NTAPI LdrpCallInitRoutine(IN PDLL_INIT_ROUTINE EntryPoint, IN PVOID BaseAddress, IN ULONG Reason, IN PVOID Context)
Definition: ldrutils.c:100
LIST_ENTRY LdrpHashTable[LDR_HASH_TABLE_ENTRIES]
Definition: ldrinit.c:60
UNICODE_STRING LdrpKnownDllPath
Definition: ldrinit.c:63
PVOID NTAPI LdrpFetchAddressOfEntryPoint(PVOID ImageBase)
NTSTATUS NTAPI LdrpInitializeProcess(IN PCONTEXT Context, IN PVOID SystemArgument1)
Definition: ldrinit.c:1757
NTSTATUS NTAPI LdrpRunInitializeRoutines(IN PCONTEXT Context OPTIONAL)
Definition: ldrinit.c:641
BOOLEAN RtlpPageHeapEnabled
Definition: heappage.c:107
PLDR_DATA_TABLE_ENTRY NTAPI LdrpAllocateDataTableEntry(IN PVOID BaseAddress)
Definition: ldrutils.c:1549
BOOLEAN LdrpLdrDatabaseIsSetup
Definition: ldrinit.c:33
VOID NTAPI AVrfDllUnloadNotification(IN PLDR_DATA_TABLE_ENTRY LdrEntry)
Definition: verifier.c:328
BOOLEAN ShowSnaps
Definition: ldrinit.c:81
HANDLE LdrpKnownDllObjectDirectory
Definition: ldrinit.c:62
VOID NTAPI LdrpRecordUnloadEvent(_In_ PLDR_DATA_TABLE_ENTRY LdrEntry)
Definition: trace.c:28
BOOLEAN g_ShimsEnabled
Definition: ldrutils.c:21
RTL_CRITICAL_SECTION LdrpLoaderLock
Definition: ldrinit.c:70
VOID NTAPI LdrpInitFailure(NTSTATUS Status)
Definition: ldrinit.c:2544
PUNICODE_STRING LdrpTopLevelDllBeingLoaded
Definition: ldrinit.c:40
VOID NTAPI AVrfDllLoadNotification(IN PLDR_DATA_TABLE_ENTRY LdrEntry)
Definition: verifier.c:294
NTSTATUS NTAPI LdrpInitializeTls(VOID)
Definition: ldrinit.c:1258
VOID NTAPI LdrpEnsureLoaderLockIsHeld(VOID)
Definition: ldrinit.c:409
NTSTATUS NTAPI LdrpSnapThunk(IN PVOID ExportBase, IN PVOID ImportBase, IN PIMAGE_THUNK_DATA OriginalThunk, IN OUT PIMAGE_THUNK_DATA Thunk, IN PIMAGE_EXPORT_DIRECTORY ExportEntry, IN ULONG ExportSize, IN BOOLEAN Static, IN LPSTR DllName)
Definition: ldrpe.c:950
ULONG NTAPI LdrpClearLoadInProgress(VOID)
Definition: ldrutils.c:2670
struct _LDRP_TLS_DATA LDRP_TLS_DATA
PVOID g_pfnSE_DllUnloaded
Definition: ldrutils.c:24
VOID NTAPI AVrfPageHeapDllNotification(IN PLDR_DATA_TABLE_ENTRY LdrEntry)
Definition: verifier.c:361
VOID NTAPI LdrpInitializeThread(IN PCONTEXT Context)
Definition: ldrinit.c:506
PLDR_DATA_TABLE_ENTRY LdrpLoadedDllHandleCache
Definition: ntdllp.h:59
PVOID g_pfnSE_DllLoaded
Definition: ldrutils.c:23
NTSTATUS NTAPI LdrpAllocateTls(VOID)
Definition: ldrinit.c:1321
VOID NTAPI RtlpInitializeKeyedEvent(VOID)
Definition: condvar.c:460
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
base of all file and directory entries
Definition: entries.h:83
Definition: xml2sdb.h:80
Definition: window.h:585
IMAGE_TLS_DIRECTORY TlsDirectory
Definition: ntdllp.h:29
LIST_ENTRY TlsLinks
Definition: ntdllp.h:28
Definition: btrfs_drv.h:1876
Definition: typedefs.h:120
uint16_t * PWSTR
Definition: typedefs.h:56
#define OPTIONAL
Definition: typedefs.h:41
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
unsigned char * PBOOLEAN
Definition: typedefs.h:53
#define NTAPI
Definition: typedefs.h:36
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2433
#define SearchPath
Definition: winbase.h:3900
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
Definition: ketypes.h:688
char * LPSTR
Definition: xmlstorage.h:182
WCHAR * LPWSTR
Definition: xmlstorage.h:184