- Update to r53061
[reactos.git] / dll / ntdll / include / ntdllp.h
index dc4bf75..e343e8f 100644 (file)
@@ -9,23 +9,23 @@
 /* INCLUDES ******************************************************************/
 
 #define LDR_HASH_TABLE_ENTRIES 32
+#define LDR_GET_HASH_ENTRY(x) (RtlUpcaseUnicodeChar((x)) & (LDR_HASH_TABLE_ENTRIES - 1))
 
 /* LdrpUpdateLoadCount2 flags */
 #define LDRP_UPDATE_REFCOUNT   0x01
 #define LDRP_UPDATE_DEREFCOUNT 0x02
 #define LDRP_UPDATE_PIN        0x03
 
+/* Loader flags */
+#define IMAGE_LOADER_FLAGS_COMPLUS 0x00000001
+#define IMAGE_LOADER_FLAGS_SYSTEM_GLOBAL 0x01000000
+
 typedef struct _LDRP_TLS_DATA
 {
     LIST_ENTRY TlsLinks;
     IMAGE_TLS_DIRECTORY TlsDirectory;
 } LDRP_TLS_DATA, *PLDRP_TLS_DATA;
 
-typedef BOOL
-(NTAPI *PDLLMAIN_FUNC)(HANDLE hInst,
-                       ULONG ul_reason_for_call,
-                       LPVOID lpReserved);
-
 /* Global data */
 extern RTL_CRITICAL_SECTION LdrpLoaderLock;
 extern BOOLEAN LdrpInLdrInit;
@@ -42,7 +42,7 @@ extern BOOLEAN LdrpLdrDatabaseIsSetup;
 extern ULONG LdrpActiveUnloadCount;
 extern BOOLEAN LdrpShutdownInProgress;
 extern UNICODE_STRING LdrpKnownDllPath;
-extern PLDR_DATA_TABLE_ENTRY LdrpGetModuleHandleCache;
+extern PLDR_DATA_TABLE_ENTRY LdrpGetModuleHandleCache, LdrpLoadedDllHandleCache;
 
 /* ldrinit.c */
 NTSTATUS NTAPI LdrpRunInitializeRoutines(IN PCONTEXT Context OPTIONAL);
@@ -50,8 +50,8 @@ VOID NTAPI LdrpInitializeThread(IN PCONTEXT Context);
 NTSTATUS NTAPI LdrpInitializeTls(VOID);
 NTSTATUS NTAPI LdrpAllocateTls(VOID);
 VOID NTAPI LdrpFreeTls(VOID);
-VOID NTAPI LdrpTlsCallback(PVOID BaseAddress, ULONG Reason);
-BOOLEAN NTAPI LdrpCallDllEntry(PDLLMAIN_FUNC EntryPoint, PVOID BaseAddress, ULONG Reason, PVOID Context);
+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 LdrpInitFailure(NTSTATUS Status);
 VOID NTAPI LdrpValidateImageForMp(IN PLDR_DATA_TABLE_ENTRY LdrDataTableEntry);
@@ -102,6 +102,16 @@ LdrpUpdateLoadCount2(IN PLDR_DATA_TABLE_ENTRY LdrEntry,
 ULONG NTAPI
 LdrpClearLoadInProgress();
 
+NTSTATUS
+NTAPI
+LdrpSetProtection(PVOID ViewBase,
+                  BOOLEAN Restore);
+
+BOOLEAN
+NTAPI
+LdrpCheckForLoadedDllHandle(IN PVOID Base,
+                            OUT PLDR_DATA_TABLE_ENTRY *LdrEntry);
+
 BOOLEAN NTAPI
 LdrpCheckForLoadedDll(IN PWSTR DllPath,
                       IN PUNICODE_STRING DllName,
@@ -121,7 +131,7 @@ LdrpMapDll(IN PWSTR SearchPath OPTIONAL,
 PVOID NTAPI
 LdrpFetchAddressOfEntryPoint(PVOID ImageBase);
 
-BOOLEAN NTAPI
+VOID NTAPI
 LdrpFreeUnicodeString(PUNICODE_STRING String);
 
 
@@ -136,6 +146,18 @@ NTSTATUS LdrMapNTDllForProcess(HANDLE ProcessHandle,
 ULONG
 LdrpGetResidentSize(PIMAGE_NT_HEADERS NTHeaders);
 
+NTSTATUS
+NTAPI
+LdrpLoadImportModule(IN PWSTR DllPath OPTIONAL,
+                     IN LPSTR ImportName,
+                     IN PVOID DllBase,
+                     OUT PLDR_DATA_TABLE_ENTRY *DataTableEntry,
+                     OUT PBOOLEAN Existing);
+                     
+VOID
+NTAPI
+LdrpFinalizeAndDeallocateDataTableEntry(IN PLDR_DATA_TABLE_ENTRY Entry);
+                     
 extern HANDLE WindowsApiPort;
 
 /* EOF */