2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
4 * FILE: dll/ntdll/include/ntdllp.h
5 * PURPOSE: Native Libary Internal Header
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
9 /* INCLUDES ******************************************************************/
11 #define LDR_HASH_TABLE_ENTRIES 32
13 typedef struct _LDRP_TLS_DATA
16 IMAGE_TLS_DIRECTORY TlsDirectory
;
17 } LDRP_TLS_DATA
, *PLDRP_TLS_DATA
;
20 (NTAPI
*PDLLMAIN_FUNC
)(HANDLE hInst
,
21 ULONG ul_reason_for_call
,
25 extern RTL_CRITICAL_SECTION LdrpLoaderLock
;
26 extern BOOLEAN LdrpInLdrInit
;
27 extern LIST_ENTRY LdrpHashTable
[LDR_HASH_TABLE_ENTRIES
];
28 extern BOOLEAN ShowSnaps
;
29 extern UNICODE_STRING LdrpDefaultPath
;
32 NTSTATUS NTAPI
LdrpRunInitializeRoutines(IN PCONTEXT Context OPTIONAL
);
33 NTSTATUS NTAPI
LdrpInitializeThread(IN PCONTEXT Context
);
34 NTSTATUS NTAPI
LdrpInitializeTls(VOID
);
35 NTSTATUS NTAPI
LdrpAllocateTls(VOID
);
36 VOID NTAPI
LdrpFreeTls(VOID
);
37 VOID NTAPI
LdrpTlsCallback(PVOID BaseAddress
, ULONG Reason
);
38 BOOLEAN NTAPI
LdrpCallDllEntry(PDLLMAIN_FUNC EntryPoint
, PVOID BaseAddress
, ULONG Reason
, PVOID Context
);
39 NTSTATUS NTAPI
LdrpInitializeProcess(PCONTEXT Context
, PVOID SystemArgument1
);
40 VOID NTAPI
LdrpInitFailure(NTSTATUS Status
);
46 LdrpSnapThunk(IN PVOID ExportBase
,
48 IN PIMAGE_THUNK_DATA OriginalThunk
,
49 IN OUT PIMAGE_THUNK_DATA Thunk
,
50 IN PIMAGE_EXPORT_DIRECTORY ExportEntry
,
56 LdrpWalkImportDescriptor(IN LPWSTR DllPath OPTIONAL
,
57 IN PLDR_DATA_TABLE_ENTRY LdrEntry
);
62 LdrpGetProcedureAddress(IN PVOID BaseAddress
,
65 OUT PVOID
*ProcedureAddress
,
66 IN BOOLEAN ExecuteInit
);
68 PLDR_DATA_TABLE_ENTRY NTAPI
69 LdrpAllocateDataTableEntry(IN PVOID BaseAddress
);
72 LdrpInsertMemoryTableEntry(IN PLDR_DATA_TABLE_ENTRY LdrEntry
);
75 LdrpLoadDll(IN BOOLEAN Redirected
,
76 IN PWSTR DllPath OPTIONAL
,
77 IN PULONG DllCharacteristics OPTIONAL
,
78 IN PUNICODE_STRING DllName
,
79 OUT PVOID
*BaseAddress
,
83 LdrpClearLoadInProgress();
86 LdrpCheckForLoadedDll(IN PWSTR DllPath
,
87 IN PUNICODE_STRING DllName
,
89 IN BOOLEAN RedirectedDll
,
90 OUT PLDR_DATA_TABLE_ENTRY
*LdrEntry
);
93 LdrpMapDll(IN PWSTR SearchPath OPTIONAL
,
95 IN PWSTR DllName OPTIONAL
,
96 IN PULONG DllCharacteristics
,
99 OUT PLDR_DATA_TABLE_ENTRY
*DataTableEntry
);
102 LdrpFetchAddressOfEntryPoint(PVOID ImageBase
);
105 /* FIXME: Cleanup this mess */
106 typedef NTSTATUS (NTAPI
*PEPFUNC
)(PPEB
);
107 NTSTATUS
LdrMapSections(HANDLE ProcessHandle
,
109 HANDLE SectionHandle
,
110 PIMAGE_NT_HEADERS NTHeaders
);
111 NTSTATUS
LdrMapNTDllForProcess(HANDLE ProcessHandle
,
112 PHANDLE NTDllSectionHandle
);
113 BOOLEAN
LdrMappedAsDataFile(PVOID
*BaseAddress
);
115 LdrpGetResidentSize(PIMAGE_NT_HEADERS NTHeaders
);
116 PEPFUNC
LdrPEStartup (PVOID ImageBase
,
117 HANDLE SectionHandle
,
118 PLDR_DATA_TABLE_ENTRY
* Module
,
121 extern HANDLE WindowsApiPort
;