[CMAKE]
[reactos.git] / dll / ntdll / include / ntdllp.h
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 Libary Internal Header
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
7 */
8
9 /* INCLUDES ******************************************************************/
10
11 #define LDR_HASH_TABLE_ENTRIES 32
12
13 typedef struct _LDRP_TLS_DATA
14 {
15 LIST_ENTRY TlsLinks;
16 IMAGE_TLS_DIRECTORY TlsDirectory;
17 } LDRP_TLS_DATA, *PLDRP_TLS_DATA;
18
19 typedef BOOL
20 (NTAPI *PDLLMAIN_FUNC)(HANDLE hInst,
21 ULONG ul_reason_for_call,
22 LPVOID lpReserved);
23
24 /* Global data */
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;
30
31 /* ldrinit.c */
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);
41
42
43 /* ldrpe.c */
44 NTSTATUS
45 NTAPI
46 LdrpSnapThunk(IN PVOID ExportBase,
47 IN PVOID ImportBase,
48 IN PIMAGE_THUNK_DATA OriginalThunk,
49 IN OUT PIMAGE_THUNK_DATA Thunk,
50 IN PIMAGE_EXPORT_DIRECTORY ExportEntry,
51 IN ULONG ExportSize,
52 IN BOOLEAN Static,
53 IN LPSTR DllName);
54
55 NTSTATUS NTAPI
56 LdrpWalkImportDescriptor(IN LPWSTR DllPath OPTIONAL,
57 IN PLDR_DATA_TABLE_ENTRY LdrEntry);
58
59
60 /* ldrutils.c */
61 NTSTATUS NTAPI
62 LdrpGetProcedureAddress(IN PVOID BaseAddress,
63 IN PANSI_STRING Name,
64 IN ULONG Ordinal,
65 OUT PVOID *ProcedureAddress,
66 IN BOOLEAN ExecuteInit);
67
68 PLDR_DATA_TABLE_ENTRY NTAPI
69 LdrpAllocateDataTableEntry(IN PVOID BaseAddress);
70
71 VOID NTAPI
72 LdrpInsertMemoryTableEntry(IN PLDR_DATA_TABLE_ENTRY LdrEntry);
73
74 NTSTATUS NTAPI
75 LdrpLoadDll(IN BOOLEAN Redirected,
76 IN PWSTR DllPath OPTIONAL,
77 IN PULONG DllCharacteristics OPTIONAL,
78 IN PUNICODE_STRING DllName,
79 OUT PVOID *BaseAddress,
80 IN BOOLEAN CallInit);
81
82 ULONG NTAPI
83 LdrpClearLoadInProgress();
84
85 BOOLEAN NTAPI
86 LdrpCheckForLoadedDll(IN PWSTR DllPath,
87 IN PUNICODE_STRING DllName,
88 IN BOOLEAN Flag,
89 IN BOOLEAN RedirectedDll,
90 OUT PLDR_DATA_TABLE_ENTRY *LdrEntry);
91
92 NTSTATUS NTAPI
93 LdrpMapDll(IN PWSTR SearchPath OPTIONAL,
94 IN PWSTR DllPath2,
95 IN PWSTR DllName OPTIONAL,
96 IN PULONG DllCharacteristics,
97 IN BOOLEAN Static,
98 IN BOOLEAN Redirect,
99 OUT PLDR_DATA_TABLE_ENTRY *DataTableEntry);
100
101 PVOID NTAPI
102 LdrpFetchAddressOfEntryPoint(PVOID ImageBase);
103
104
105 /* FIXME: Cleanup this mess */
106 typedef NTSTATUS (NTAPI *PEPFUNC)(PPEB);
107 NTSTATUS LdrMapSections(HANDLE ProcessHandle,
108 PVOID ImageBase,
109 HANDLE SectionHandle,
110 PIMAGE_NT_HEADERS NTHeaders);
111 NTSTATUS LdrMapNTDllForProcess(HANDLE ProcessHandle,
112 PHANDLE NTDllSectionHandle);
113 BOOLEAN LdrMappedAsDataFile(PVOID *BaseAddress);
114 ULONG
115 LdrpGetResidentSize(PIMAGE_NT_HEADERS NTHeaders);
116 PEPFUNC LdrPEStartup (PVOID ImageBase,
117 HANDLE SectionHandle,
118 PLDR_DATA_TABLE_ENTRY* Module,
119 PWSTR FullDosName);
120
121 extern HANDLE WindowsApiPort;
122
123 /* EOF */