Alexandre Julliard : ntdll: Implement RtlGetLocaleFileMappingAddress().
Alexandre Julliard
julliard at winehq.org
Mon Mar 21 17:20:25 CDT 2022
Module: wine
Branch: master
Commit: c13d88ba971c540c525ab9adbbd1d663cf6fc6d3
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c13d88ba971c540c525ab9adbbd1d663cf6fc6d3
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Mar 21 11:52:22 2022 +0100
ntdll: Implement RtlGetLocaleFileMappingAddress().
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/locale.c | 23 +++++++++++++++++++++++
dlls/ntdll/ntdll.spec | 1 +
include/winternl.h | 1 +
3 files changed, 25 insertions(+)
diff --git a/dlls/ntdll/locale.c b/dlls/ntdll/locale.c
index fe185d403f2..360496dd7e1 100644
--- a/dlls/ntdll/locale.c
+++ b/dlls/ntdll/locale.c
@@ -701,6 +701,29 @@ void WINAPI RtlResetRtlTranslations( const NLSTABLEINFO *info )
}
+/**************************************************************************
+ * RtlGetLocaleFileMappingAddress (NTDLL.@)
+ */
+NTSTATUS WINAPI RtlGetLocaleFileMappingAddress( void **ptr, LCID *lcid, LARGE_INTEGER *size )
+{
+ static void *cached_ptr;
+ static LCID cached_lcid;
+
+ if (!cached_ptr)
+ {
+ void *addr;
+ NTSTATUS status = NtInitializeNlsFiles( &addr, &cached_lcid, size );
+
+ if (status) return status;
+ if (InterlockedCompareExchangePointer( &cached_ptr, addr, NULL ))
+ NtUnmapViewOfSection( GetCurrentProcess(), addr );
+ }
+ *ptr = cached_ptr;
+ *lcid = cached_lcid;
+ return STATUS_SUCCESS;
+}
+
+
/**************************************************************************
* RtlAnsiCharToUnicodeChar (NTDLL.@)
*/
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 6d134770596..4c7b9be1d9f 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -726,6 +726,7 @@
# @ stub RtlGetLengthWithoutLastFullDosOrNtPathElement
# Yes, Microsoft really misspelled this one!
# @ stub RtlGetLengthWithoutTrailingPathSeperators
+@ stdcall RtlGetLocaleFileMappingAddress(ptr ptr ptr)
@ stdcall RtlGetLongestNtPathLength()
@ stdcall -syscall -arch=win32 RtlGetNativeSystemInformation(long ptr long ptr) NtWow64GetNativeSystemInformation
@ stdcall -syscall -arch=win64 RtlGetNativeSystemInformation(long ptr long ptr) NtQuerySystemInformation
diff --git a/include/winternl.h b/include/winternl.h
index 68c174d6086..3fa5fad9b46 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -4346,6 +4346,7 @@ NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void);
NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void);
+NTSYSAPI NTSTATUS WINAPI RtlGetLocaleFileMappingAddress(void**,LCID*,LARGE_INTEGER*);
NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void);
NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void);
NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
More information about the wine-cvs
mailing list