[NTDLL]: Export RtlImageNtHeaderEx and LodrLoadAlternateResourceModule.

[NDK]: Add LdrLoadAlternateResourceModule. Fix RtlDosApplyFileIsolationRedirection_UStr and add flags.
[NTDLL]: Halfplement LdrLoad/UnloadAlternateResourceModule.

svn path=/trunk/; revision=54307
This commit is contained in:
Alex Ionescu 2011-11-06 01:34:06 +00:00
parent 485d80b662
commit ec9698366a
6 changed files with 78 additions and 26 deletions

View file

@ -88,7 +88,7 @@
;@ stdcall LdrHotPatchRoutine ;@ stdcall LdrHotPatchRoutine
;@ stdcall LdrInitShimEngineDynamic ;@ stdcall LdrInitShimEngineDynamic
@ stdcall LdrInitializeThunk(long long long long) @ stdcall LdrInitializeThunk(long long long long)
;@ stdcall LdrLoadAlternateResourceModule @ stdcall LdrLoadAlternateResourceModule(ptr ptr)
@ stdcall LdrLoadDll(wstr long ptr ptr) @ stdcall LdrLoadDll(wstr long ptr ptr)
@ stdcall LdrLockLoaderLock(long ptr ptr) @ stdcall LdrLockLoaderLock(long ptr ptr)
;@ stdcall LdrOpenImageFileOptionsKey ; 5.2 SP1 and higher ;@ stdcall LdrOpenImageFileOptionsKey ; 5.2 SP1 and higher
@ -566,7 +566,7 @@
@ stdcall RtlDllShutdownInProgress() @ stdcall RtlDllShutdownInProgress()
@ stdcall RtlDnsHostNameToComputerName(ptr ptr long) @ stdcall RtlDnsHostNameToComputerName(ptr ptr long)
@ stdcall RtlDoesFileExists_U(wstr) @ stdcall RtlDoesFileExists_U(wstr)
;@ stdcall RtlDosApplyFileIsolationRedirection_Ustr @ stdcall RtlDosApplyFileIsolationRedirection_Ustr(long ptr ptr ptr ptr ptr ptr ptr ptr)
@ stdcall RtlDosPathNameToNtPathName_U(wstr ptr ptr ptr) @ stdcall RtlDosPathNameToNtPathName_U(wstr ptr ptr ptr)
;@ stdcall RtlDosPathNameToNtPathName_U_WithStatus ; 5.2 SP1, and higher ;@ stdcall RtlDosPathNameToNtPathName_U_WithStatus ; 5.2 SP1, and higher
@ stdcall RtlDosPathNameToRelativeNtPathName_U(ptr ptr ptr ptr) ; CHECKME @ stdcall RtlDosPathNameToRelativeNtPathName_U(ptr ptr ptr ptr) ; CHECKME
@ -690,7 +690,7 @@
@ stdcall RtlIdentifierAuthoritySid(ptr) @ stdcall RtlIdentifierAuthoritySid(ptr)
@ stdcall RtlImageDirectoryEntryToData(long long long ptr) @ stdcall RtlImageDirectoryEntryToData(long long long ptr)
@ stdcall RtlImageNtHeader(long) @ stdcall RtlImageNtHeader(long)
;@ stdcall RtlImageNtHeaderEx @ stdcall RtlImageNtHeaderEx(long ptr double ptr)
@ stdcall RtlImageRvaToSection(ptr long long) @ stdcall RtlImageRvaToSection(ptr long long)
@ stdcall RtlImageRvaToVa(ptr long long ptr) @ stdcall RtlImageRvaToVa(ptr long long ptr)
@ stdcall RtlImpersonateSelf(long) @ stdcall RtlImpersonateSelf(long)

View file

@ -19,9 +19,18 @@ LIST_ENTRY LdrpUnloadHead;
LONG LdrpLoaderLockAcquisitonCount; LONG LdrpLoaderLockAcquisitonCount;
BOOLEAN LdrpShowRecursiveLoads, LdrpBreakOnRecursiveDllLoads; BOOLEAN LdrpShowRecursiveLoads, LdrpBreakOnRecursiveDllLoads;
UNICODE_STRING LdrApiDefaultExtension = RTL_CONSTANT_STRING(L".DLL"); UNICODE_STRING LdrApiDefaultExtension = RTL_CONSTANT_STRING(L".DLL");
ULONG AlternateResourceModuleCount;
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
BOOLEAN
NTAPI
LdrAlternateResourcesEnabled(VOID)
{
/* ReactOS does not support this */
return FALSE;
}
ULONG_PTR ULONG_PTR
FORCEINLINE FORCEINLINE
LdrpMakeCookie(VOID) LdrpMakeCookie(VOID)
@ -1524,15 +1533,46 @@ LdrProcessRelocationBlock(IN ULONG_PTR Address,
} }
/* /*
* @unimplemented * @implemented
*/ */
BOOLEAN BOOLEAN
NTAPI NTAPI
LdrUnloadAlternateResourceModule(IN PVOID BaseAddress) LdrUnloadAlternateResourceModule(IN PVOID BaseAddress)
{ {
//static BOOLEAN WarnedOnce = FALSE; ULONG_PTR Cookie;
//if (WarnedOnce == FALSE) { UNIMPLEMENTED; WarnedOnce = TRUE; }
return FALSE; /* Acquire the loader lock */
LdrLockLoaderLock(TRUE, NULL, &Cookie);
/* Check if there's any alternate resources loaded */
if (AlternateResourceModuleCount)
{
UNIMPLEMENTED;
}
/* Release the loader lock */
LdrUnlockLoaderLock(1, Cookie);
/* All done */
return TRUE;
} }
/* FIXME: Add to ntstatus.mc */
#define STATUS_MUI_FILE_NOT_FOUND ((NTSTATUS)0xC00B0001L)
/*
* @implemented
*/
NTSTATUS
NTAPI
LdrLoadAlternateResourceModule(IN PVOID Module,
IN PWSTR Buffer)
{
/* Is MUI Support enabled? */
if (!LdrAlternateResourcesEnabled()) return STATUS_SUCCESS;
UNIMPLEMENTED;
return STATUS_MUI_FILE_NOT_FOUND;
}
/* EOF */ /* EOF */

View file

@ -518,21 +518,21 @@ RtlPcToFileHeader(IN PVOID PcValue,
return ImageBase; return ImageBase;
} }
/*
* @unimplemented
*/
NTSYSAPI NTSYSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
RtlDosApplyFileIsolationRedirection_Ustr( RtlDosApplyFileIsolationRedirection_Ustr(IN ULONG Flags,
IN BOOLEAN Unknown, IN PUNICODE_STRING OriginalName,
IN PUNICODE_STRING OriginalName, IN PUNICODE_STRING Extension,
IN PUNICODE_STRING Extension, IN OUT PUNICODE_STRING StaticString,
IN OUT PUNICODE_STRING RedirectedName, IN OUT PUNICODE_STRING DynamicString,
IN OUT PUNICODE_STRING RedirectedName2, IN OUT PUNICODE_STRING *NewName,
IN OUT PUNICODE_STRING *OriginalName2, IN PULONG NewFlags,
IN PVOID Unknown1, IN PSIZE_T FileNameSize,
IN PVOID Unknown2, IN PSIZE_T RequiredLength)
IN PVOID Unknown3
)
{ {
return STATUS_SXS_KEY_NOT_FOUND; return STATUS_SXS_KEY_NOT_FOUND;
} }

View file

@ -58,6 +58,13 @@ LdrFindResourceDirectory_U(
OUT PIMAGE_RESOURCE_DIRECTORY *ResourceDirectory OUT PIMAGE_RESOURCE_DIRECTORY *ResourceDirectory
); );
NTSTATUS
NTAPI
LdrLoadAlternateResourceModule(
IN PVOID Module,
IN PWSTR Buffer
);
BOOLEAN BOOLEAN
NTAPI NTAPI
LdrUnloadAlternateResourceModule( LdrUnloadAlternateResourceModule(

View file

@ -3275,15 +3275,15 @@ NTSYSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
RtlDosApplyFileIsolationRedirection_Ustr( RtlDosApplyFileIsolationRedirection_Ustr(
IN BOOLEAN Unknown, IN ULONG Flags,
IN PUNICODE_STRING OriginalName, IN PUNICODE_STRING OriginalName,
IN PUNICODE_STRING Extension, IN PUNICODE_STRING Extension,
IN OUT PUNICODE_STRING RedirectedName, IN OUT PUNICODE_STRING StaticString,
IN OUT PUNICODE_STRING RedirectedName2, IN OUT PUNICODE_STRING DynamicString,
IN OUT PUNICODE_STRING *OriginalName2, IN OUT PUNICODE_STRING *NewName,
IN PVOID Unknown1, IN PULONG NewFlags,
IN PVOID Unknown2, IN PSIZE_T FileNameSize,
IN PVOID Unknown3 IN PSIZE_T RequiredLength
); );
NTSYSAPI NTSYSAPI

View file

@ -251,6 +251,11 @@ C_ASSERT(HEAP_CREATE_VALID_MASK == 0x0007F0FF);
// //
#define RTL_IMAGE_NT_HEADER_EX_FLAG_NO_RANGE_CHECK 0x00000001 #define RTL_IMAGE_NT_HEADER_EX_FLAG_NO_RANGE_CHECK 0x00000001
//
// RtlDosApplyFileIsolationRedirection_Ustr Flags
//
#define RTL_DOS_APPLY_FILE_REDIRECTION_USTR_FLAG_RESPECT_DOT_LOCAL 0x01
// //
// Codepages // Codepages
// //