[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 LdrInitShimEngineDynamic
@ stdcall LdrInitializeThunk(long long long long)
;@ stdcall LdrLoadAlternateResourceModule
@ stdcall LdrLoadAlternateResourceModule(ptr ptr)
@ stdcall LdrLoadDll(wstr long ptr ptr)
@ stdcall LdrLockLoaderLock(long ptr ptr)
;@ stdcall LdrOpenImageFileOptionsKey ; 5.2 SP1 and higher
@ -566,7 +566,7 @@
@ stdcall RtlDllShutdownInProgress()
@ stdcall RtlDnsHostNameToComputerName(ptr ptr long)
@ 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_WithStatus ; 5.2 SP1, and higher
@ stdcall RtlDosPathNameToRelativeNtPathName_U(ptr ptr ptr ptr) ; CHECKME
@ -690,7 +690,7 @@
@ stdcall RtlIdentifierAuthoritySid(ptr)
@ stdcall RtlImageDirectoryEntryToData(long long long ptr)
@ stdcall RtlImageNtHeader(long)
;@ stdcall RtlImageNtHeaderEx
@ stdcall RtlImageNtHeaderEx(long ptr double ptr)
@ stdcall RtlImageRvaToSection(ptr long long)
@ stdcall RtlImageRvaToVa(ptr long long ptr)
@ stdcall RtlImpersonateSelf(long)

View file

@ -19,9 +19,18 @@ LIST_ENTRY LdrpUnloadHead;
LONG LdrpLoaderLockAcquisitonCount;
BOOLEAN LdrpShowRecursiveLoads, LdrpBreakOnRecursiveDllLoads;
UNICODE_STRING LdrApiDefaultExtension = RTL_CONSTANT_STRING(L".DLL");
ULONG AlternateResourceModuleCount;
/* FUNCTIONS *****************************************************************/
BOOLEAN
NTAPI
LdrAlternateResourcesEnabled(VOID)
{
/* ReactOS does not support this */
return FALSE;
}
ULONG_PTR
FORCEINLINE
LdrpMakeCookie(VOID)
@ -1524,15 +1533,46 @@ LdrProcessRelocationBlock(IN ULONG_PTR Address,
}
/*
* @unimplemented
* @implemented
*/
BOOLEAN
NTAPI
LdrUnloadAlternateResourceModule(IN PVOID BaseAddress)
{
//static BOOLEAN WarnedOnce = FALSE;
//if (WarnedOnce == FALSE) { UNIMPLEMENTED; WarnedOnce = TRUE; }
return FALSE;
ULONG_PTR Cookie;
/* 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 */

View file

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

View file

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

View file

@ -3275,15 +3275,15 @@ NTSYSAPI
NTSTATUS
NTAPI
RtlDosApplyFileIsolationRedirection_Ustr(
IN BOOLEAN Unknown,
IN ULONG Flags,
IN PUNICODE_STRING OriginalName,
IN PUNICODE_STRING Extension,
IN OUT PUNICODE_STRING RedirectedName,
IN OUT PUNICODE_STRING RedirectedName2,
IN OUT PUNICODE_STRING *OriginalName2,
IN PVOID Unknown1,
IN PVOID Unknown2,
IN PVOID Unknown3
IN OUT PUNICODE_STRING StaticString,
IN OUT PUNICODE_STRING DynamicString,
IN OUT PUNICODE_STRING *NewName,
IN PULONG NewFlags,
IN PSIZE_T FileNameSize,
IN PSIZE_T RequiredLength
);
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
//
// RtlDosApplyFileIsolationRedirection_Ustr Flags
//
#define RTL_DOS_APPLY_FILE_REDIRECTION_USTR_FLAG_RESPECT_DOT_LOCAL 0x01
//
// Codepages
//