[NTDLL] Export RTL locale functions

The exports are NT6, but the table is initialized unconditionally, because the functions will be used later internally.
This commit is contained in:
Timo Kreuzer 2025-02-23 09:54:56 +02:00
parent e01c32f3bd
commit 776c660542
2 changed files with 14 additions and 6 deletions

View file

@ -695,7 +695,7 @@
@ stdcall -stub -version=0x600+ RtlConnectToSm(ptr ptr long ptr) @ stdcall -stub -version=0x600+ RtlConnectToSm(ptr ptr long ptr)
@ stdcall RtlConsoleMultiByteToUnicodeN(ptr long ptr ptr long ptr) @ stdcall RtlConsoleMultiByteToUnicodeN(ptr long ptr ptr long ptr)
@ stdcall RtlConvertExclusiveToShared(ptr) @ stdcall RtlConvertExclusiveToShared(ptr)
@ stdcall -stub -version=0x600+ RtlConvertLCIDToString(long long long ptr long) @ stdcall -version=0x600+ RtlConvertLCIDToString(long long long ptr long)
@ stdcall -arch=win32 -ret64 RtlConvertLongToLargeInteger(long) @ stdcall -arch=win32 -ret64 RtlConvertLongToLargeInteger(long)
@ stdcall RtlConvertSharedToExclusive(ptr) @ stdcall RtlConvertSharedToExclusive(ptr)
@ stdcall RtlConvertSidToUnicodeString(ptr ptr long) @ stdcall RtlConvertSidToUnicodeString(ptr ptr long)
@ -741,7 +741,7 @@
@ stdcall RtlCreateUserSecurityObject(ptr long ptr ptr long ptr ptr) @ stdcall RtlCreateUserSecurityObject(ptr long ptr ptr long ptr ptr)
@ stdcall -stub -version=0x600+ RtlCreateUserStack(long long long long long ptr) @ stdcall -stub -version=0x600+ RtlCreateUserStack(long long long long long ptr)
@ stdcall RtlCreateUserThread(long ptr long ptr long long ptr ptr ptr ptr) @ stdcall RtlCreateUserThread(long ptr long ptr long long ptr ptr ptr ptr)
@ stdcall -stub -version=0x600+ RtlCultureNameToLCID(ptr ptr) @ stdcall -version=0x600+ RtlCultureNameToLCID(ptr ptr)
@ stdcall RtlCustomCPToUnicodeN(ptr wstr long ptr str long) @ stdcall RtlCustomCPToUnicodeN(ptr wstr long ptr str long)
@ stdcall RtlCutoverTimeToSystemTime(ptr ptr ptr long) @ stdcall RtlCutoverTimeToSystemTime(ptr ptr ptr long)
@ stdcall -stub -version=0x600+ RtlDeCommitDebugInfo(long long long) ; doesn't exist in win11 @ stdcall -stub -version=0x600+ RtlDeCommitDebugInfo(long long long) ; doesn't exist in win11
@ -999,8 +999,8 @@
@ stdcall RtlIsThreadWithinLoaderCallout() @ stdcall RtlIsThreadWithinLoaderCallout()
@ stdcall RtlIsValidHandle(ptr ptr) @ stdcall RtlIsValidHandle(ptr ptr)
@ stdcall RtlIsValidIndexHandle(ptr long ptr) @ stdcall RtlIsValidIndexHandle(ptr long ptr)
@ stdcall -stub -version=0x600+ RtlIsValidLocaleName(ptr long) @ stdcall -version=0x600+ RtlIsValidLocaleName(wstr long)
@ stdcall -stub -version=0x600+ RtlLCIDToCultureName(long long) @ stdcall -version=0x600+ RtlLCIDToCultureName(long ptr)
@ stdcall -arch=win32 -ret64 RtlLargeIntegerAdd(double double) @ stdcall -arch=win32 -ret64 RtlLargeIntegerAdd(double double)
@ stdcall -arch=win32 -ret64 RtlLargeIntegerArithmeticShift(double long) @ stdcall -arch=win32 -ret64 RtlLargeIntegerArithmeticShift(double long)
@ stdcall -arch=win32 -ret64 RtlLargeIntegerDivide(double double ptr) @ stdcall -arch=win32 -ret64 RtlLargeIntegerDivide(double double ptr)
@ -1009,13 +1009,13 @@
@ stdcall -arch=win32 -ret64 RtlLargeIntegerShiftRight(double long) @ stdcall -arch=win32 -ret64 RtlLargeIntegerShiftRight(double long)
@ stdcall -arch=win32 -ret64 RtlLargeIntegerSubtract(double double) @ stdcall -arch=win32 -ret64 RtlLargeIntegerSubtract(double double)
@ stdcall RtlLargeIntegerToChar(ptr long long ptr) @ stdcall RtlLargeIntegerToChar(ptr long long ptr)
@ stdcall -stub -version=0x600+ RtlLcidToLocaleName(long long long long) @ stdcall -version=0x600+ RtlLcidToLocaleName(long ptr long long)
@ stdcall RtlLeaveCriticalSection(ptr) @ stdcall RtlLeaveCriticalSection(ptr)
@ stdcall RtlLengthRequiredSid(long) @ stdcall RtlLengthRequiredSid(long)
@ stdcall RtlLengthSecurityDescriptor(ptr) @ stdcall RtlLengthSecurityDescriptor(ptr)
@ stdcall RtlLengthSid(ptr) @ stdcall RtlLengthSid(ptr)
@ stdcall RtlLocalTimeToSystemTime(ptr ptr) @ stdcall RtlLocalTimeToSystemTime(ptr ptr)
@ stdcall -stub -version=0x600+ RtlLocaleNameToLcid(wstr ptr long) @ stdcall -version=0x600+ RtlLocaleNameToLcid(wstr ptr long)
@ stdcall RtlLockBootStatusData(ptr) @ stdcall RtlLockBootStatusData(ptr)
@ stdcall -stub -version=0x600+ RtlLockCurrentThread() @ stdcall -stub -version=0x600+ RtlLockCurrentThread()
@ stdcall RtlLockHeap(long) @ stdcall RtlLockHeap(long)

View file

@ -86,6 +86,7 @@ ULONG LdrpActiveUnloadCount;
VOID NTAPI RtlpInitializeVectoredExceptionHandling(VOID); VOID NTAPI RtlpInitializeVectoredExceptionHandling(VOID);
VOID NTAPI RtlpInitDeferredCriticalSection(VOID); VOID NTAPI RtlpInitDeferredCriticalSection(VOID);
VOID NTAPI RtlInitializeHeapManager(VOID); VOID NTAPI RtlInitializeHeapManager(VOID);
NTSTATUS NTAPI RtlpInitializeLocaleTable(VOID);
ULONG RtlpDisableHeapLookaside; // TODO: Move to heap.c ULONG RtlpDisableHeapLookaside; // TODO: Move to heap.c
ULONG RtlpShutdownProcessFlags; // TODO: Use it ULONG RtlpShutdownProcessFlags; // TODO: Use it
@ -2031,6 +2032,13 @@ LdrpInitializeProcess(IN PCONTEXT Context,
return STATUS_NO_MEMORY; return STATUS_NO_MEMORY;
} }
Status = RtlpInitializeLocaleTable();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize locale table\n");
return Status;
}
/* Allocate an Activation Context Stack */ /* Allocate an Activation Context Stack */
Status = RtlAllocateActivationContextStack(&Teb->ActivationContextStackPointer); Status = RtlAllocateActivationContextStack(&Teb->ActivationContextStackPointer);
if (!NT_SUCCESS(Status)) return Status; if (!NT_SUCCESS(Status)) return Status;