[LDR] Introduce a private heap for the loader.
[reactos.git] / dll / ntdll / include / ntdllp.h
index 606b5fc..11f1e82 100644 (file)
@@ -2,11 +2,11 @@
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS System Libraries
  * FILE:            dll/ntdll/include/ntdllp.h
- * PURPOSE:         Native Libary Internal Header
+ * PURPOSE:         Native Library Internal Header
  * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
  */
 
-/* INCLUDES ******************************************************************/
+#pragma once
 
 #define LDR_HASH_TABLE_ENTRIES 32
 #define LDR_GET_HASH_ENTRY(x) (RtlUpcaseUnicodeChar((x)) & (LDR_HASH_TABLE_ENTRIES - 1))
@@ -32,6 +32,7 @@ typedef struct _LDRP_TLS_DATA
 /* Global data */
 extern RTL_CRITICAL_SECTION LdrpLoaderLock;
 extern BOOLEAN LdrpInLdrInit;
+extern PVOID LdrpHeap;
 extern LIST_ENTRY LdrpHashTable[LDR_HASH_TABLE_ENTRIES];
 extern BOOLEAN ShowSnaps;
 extern UNICODE_STRING LdrpDefaultPath;
@@ -46,7 +47,15 @@ extern ULONG LdrpActiveUnloadCount;
 extern BOOLEAN LdrpShutdownInProgress;
 extern UNICODE_STRING LdrpKnownDllPath;
 extern PLDR_DATA_TABLE_ENTRY LdrpGetModuleHandleCache, LdrpLoadedDllHandleCache;
+extern BOOLEAN RtlpPageHeapEnabled;
 extern ULONG RtlpDphGlobalFlags;
+extern BOOLEAN g_ShimsEnabled;
+extern PVOID g_pShimEngineModule;
+extern PVOID g_pfnSE_DllLoaded;
+extern PVOID g_pfnSE_DllUnloaded;
+extern PVOID g_pfnSE_InstallBeforeInit;
+extern PVOID g_pfnSE_InstallAfterInit;
+extern PVOID g_pfnSE_ProcessDying;
 
 /* ldrinit.c */
 NTSTATUS NTAPI LdrpRunInitializeRoutines(IN PCONTEXT Context OPTIONAL);
@@ -54,12 +63,12 @@ VOID NTAPI LdrpInitializeThread(IN PCONTEXT Context);
 NTSTATUS NTAPI LdrpInitializeTls(VOID);
 NTSTATUS NTAPI LdrpAllocateTls(VOID);
 VOID NTAPI LdrpFreeTls(VOID);
-VOID NTAPI LdrpCallTlsInitializers(PVOID BaseAddress, ULONG Reason);
-BOOLEAN NTAPI LdrpCallInitRoutine(PDLL_INIT_ROUTINE EntryPoint, PVOID BaseAddress, ULONG Reason, PVOID Context);
-NTSTATUS NTAPI LdrpInitializeProcess(PCONTEXT Context, PVOID SystemArgument1);
+VOID NTAPI LdrpCallTlsInitializers(IN PLDR_DATA_TABLE_ENTRY LdrEntry, IN ULONG Reason);
+BOOLEAN NTAPI LdrpCallInitRoutine(IN PDLL_INIT_ROUTINE EntryPoint, IN PVOID BaseAddress, IN ULONG Reason, IN PVOID Context);
+NTSTATUS NTAPI LdrpInitializeProcess(IN PCONTEXT Context, IN PVOID SystemArgument1);
 VOID NTAPI LdrpInitFailure(NTSTATUS Status);
 VOID NTAPI LdrpValidateImageForMp(IN PLDR_DATA_TABLE_ENTRY LdrDataTableEntry);
-VOID NTAPI LdrpEnsureLoaderLockIsHeld();
+VOID NTAPI LdrpEnsureLoaderLockIsHeld(VOID);
 
 /* ldrpe.c */
 NTSTATUS
@@ -105,7 +114,7 @@ LdrpUpdateLoadCount2(IN PLDR_DATA_TABLE_ENTRY LdrEntry,
                      IN ULONG Flags);
 
 ULONG NTAPI
-LdrpClearLoadInProgress();
+LdrpClearLoadInProgress(VOID);
 
 NTSTATUS
 NTAPI
@@ -139,6 +148,38 @@ LdrpFetchAddressOfEntryPoint(PVOID ImageBase);
 VOID NTAPI
 LdrpFreeUnicodeString(PUNICODE_STRING String);
 
+VOID NTAPI
+LdrpGetShimEngineInterface(VOID);
+
+VOID
+NTAPI
+LdrpLoadShimEngine(IN PWSTR ImageName,
+                   IN PUNICODE_STRING ProcessImage,
+                   IN PVOID pShimData);
+
+VOID NTAPI
+LdrpUnloadShimEngine(VOID);
+
+/* verifier.c */
+
+NTSTATUS NTAPI
+LdrpInitializeApplicationVerifierPackage(IN HANDLE KeyHandle,
+                                         IN PPEB Peb,
+                                         IN BOOLEAN SystemWide,
+                                         IN BOOLEAN ReadAdvancedOptions);
+
+NTSTATUS NTAPI
+AVrfInitializeVerifier(VOID);
+
+VOID NTAPI
+AVrfDllLoadNotification(IN PLDR_DATA_TABLE_ENTRY LdrEntry);
+
+VOID NTAPI
+AVrfDllUnloadNotification(IN PLDR_DATA_TABLE_ENTRY LdrEntry);
+
+VOID NTAPI
+AVrfPageHeapDllNotification(IN PLDR_DATA_TABLE_ENTRY LdrEntry);
+
 
 /* FIXME: Cleanup this mess */
 typedef NTSTATUS (NTAPI *PEPFUNC)(PPEB);
@@ -155,7 +196,6 @@ NTSTATUS
 NTAPI
 LdrpLoadImportModule(IN PWSTR DllPath OPTIONAL,
                      IN LPSTR ImportName,
-                     IN PVOID DllBase,
                      OUT PLDR_DATA_TABLE_ENTRY *DataTableEntry,
                      OUT PBOOLEAN Existing);