#include <rtl.h>
#include <debug.h>
Go to the source code of this file.
|
| NTSTATUS NTAPI | RtlpInitializeLocaleTable (VOID) |
| | Initializes the locale index table, that maps the LCIDs to their indexes in the alphabetical table, and is sorted by LCID.
|
| |
| static _Must_inspect_result_ ULONG | FindIndexByLcid (_In_ LCID Lcid) |
| |
| static _Must_inspect_result_ INT | CompareLocaleNames (_In_ PCSTR AsciiLocaleName, _In_ PCUNICODE_STRING UnicodeLocaleName) |
| |
| static _Must_inspect_result_ ULONG | FindIndexByLocaleName (_In_ PCUNICODE_STRING LocaleName) |
| |
| static _Must_inspect_result_ BOOLEAN | CopyAsciizToUnicodeString (_Inout_ PUNICODE_STRING UnicodeString, _In_ PCSTR AsciiString) |
| |
| static BOOLEAN | IsNeutralLocale (_In_ LCID Lcid) |
| |
| NTSTATUS NTAPI | RtlLcidToLocaleName (_In_ LCID Lcid, _Inout_ PUNICODE_STRING LocaleName, _In_ ULONG Flags, _In_ BOOLEAN AllocateDestinationString) |
| |
| static _Must_inspect_result_ NTSTATUS | RtlpLocaleNameToLcidInternal (_In_ PCUNICODE_STRING LocaleName, _Out_ PLCID Lcid, _In_ ULONG Flags) |
| |
| NTSTATUS NTAPI | RtlLocaleNameToLcid (_In_ PCWSTR LocaleName, _Out_ PLCID Lcid, _In_ ULONG Flags) |
| |
| | _Success_ (return !=FALSE) |
| |
| BOOLEAN NTAPI | RtlIsValidLocaleName (_In_ LPCWSTR LocaleName, _In_ ULONG Flags) |
| |
| NTSTATUS NTAPI | RtlConvertLCIDToString (_In_ LCID LcidValue, _In_ ULONG Base, _In_ ULONG Padding, _Out_writes_(Size) PWSTR pResultBuf, _In_ ULONG Size) |
| |
◆ LCID_ALT_NAME
| #define LCID_ALT_NAME 0x00100000 |
◆ LOWERCASE_CHAR
| #define LOWERCASE_CHAR |
( |
|
Char | ) |
(((Char) >= 'A' && (Char) <= 'Z') ? ((Char) + ('a' - 'A')) : (Char)) |
◆ MAX_BASIC_LCID
◆ MAX_PRIMARY_LANGUAGE
| #define MAX_PRIMARY_LANGUAGE 0x3FF |
◆ NDEBUG
◆ LOCALE_ENTRY
◆ _Success_()
Definition at line 855 of file locale.c.
861{
863
864
867 {
868 DPRINT1(
"RtlLcidToLocaleName failed with status 0x%lx\n",
Status);
870 }
871
873}
#define NT_SUCCESS(StatCode)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
NTSYSAPI NTSTATUS WINAPI RtlLcidToLocaleName(LCID, UNICODE_STRING *, ULONG, BOOLEAN)
◆ CompareLocaleNames()
Definition at line 582 of file locale.c.
585{
587
588
589 for (
i = 0;
i < UnicodeLocaleName->Length /
sizeof(
WCHAR);
i++)
590 {
591
594
595
596 if (Char1 == Char2)
597 {
598 continue;
599 }
600
601
602 if (AsciiLocaleName[
i] ==
'\0')
603 {
604
605 return -1;
606 }
607
608
609 return (
INT)Char1 - (
INT)Char2;
610 }
611
612
613
614 if (AsciiLocaleName[
i] ==
'\0')
615 {
616 return 0;
617 }
618
619
620 return 1;
621}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define LOWERCASE_CHAR(Char)
Referenced by FindIndexByLocaleName().
◆ CopyAsciizToUnicodeString()
Definition at line 661 of file locale.c.
664{
666
667
669 {
671 }
672
673
675 {
677 }
678
679
682
684}
_ACRTIMP size_t __cdecl strlen(const char *)
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_opt_ PCUNICODE_STRING UnicodeString
Referenced by RtlLcidToLocaleName().
◆ FindIndexByLcid()
Definition at line 540 of file locale.c.
542{
548
550 {
552
553
556
557
559 if (CurrentLcid <
Lcid)
560 {
562 }
563 else if (CurrentLcid >
Lcid)
564 {
566 }
567 else
568 {
570 }
571 }
572
574}
static USHORT RtlpLocaleIndexTable[_ARRAYSIZE(RtlpLocaleTable)]
static const LOCALE_ENTRY RtlpLocaleTable[]
Referenced by RtlLcidToLocaleName().
◆ FindIndexByLocaleName()
Definition at line 626 of file locale.c.
628{
632 PCSTR CurrentLocaleName;
634
636 {
638
641 if (CompareResult < 0)
642 {
644 }
645 else if (CompareResult > 0)
646 {
648 }
649 else
650 {
651 return Middle;
652 }
653 }
654
656}
static _In_ LPCWSTR LocaleName
static _Must_inspect_result_ INT CompareLocaleNames(_In_ PCSTR AsciiLocaleName, _In_ PCUNICODE_STRING UnicodeLocaleName)
Referenced by RtlpLocaleNameToLcidInternal().
◆ IsNeutralLocale()
◆ RtlConvertLCIDToString()
Definition at line 914 of file locale.c.
920{
923}
#define STATUS_NOT_IMPLEMENTED
◆ RtlIsValidLocaleName()
◆ RtlLcidToLocaleName()
Definition at line 704 of file locale.c.
709{
711
712
714 {
715 DPRINT1(
"RtlLcidToLocaleName: Invalid flags: 0x%lx\n",
Flags);
717 }
718
719
721 {
722 DPRINT1(
"RtlLcidToLocaleName: Invalid buffer\n");
724 }
725
726
728 {
729 DPRINT1(
"RtlLcidToLocaleName: Invalid LCID: 0x%lx\n",
Lcid);
731 }
732
733
734 if ((
Flags & RTL_LOCALE_ALLOW_NEUTRAL_NAMES) == 0)
735 {
736
738 {
739 DPRINT(
"RtlLcidToLocaleName: Neutral LCID: 0x%lx\n",
Lcid);
741 }
742 }
743
744
746 {
749 break;
750
754 break;
755
758 }
759
760
763 {
764 DPRINT(
"RtlLcidToLocaleName: LCID 0x%lx not found\n",
Lcid);
766 }
767
768
770 {
771 DPRINT(
"RtlLcidToLocaleName: Buffer too small\n");
773 }
774
776}
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
#define LOCALE_USER_DEFAULT
#define LOCALE_CUSTOM_DEFAULT
#define LOCALE_SYSTEM_DEFAULT
#define LOCALE_CUSTOM_UI_DEFAULT
#define NLS_VALID_LOCALE_MASK
#define STATUS_INVALID_PARAMETER_2
#define STATUS_INVALID_PARAMETER_1
#define STATUS_INVALID_PARAMETER_3
LCID RtlpSystemDefaultLcid
static _Must_inspect_result_ ULONG FindIndexByLcid(_In_ LCID Lcid)
static BOOLEAN IsNeutralLocale(_In_ LCID Lcid)
static _Must_inspect_result_ BOOLEAN CopyAsciizToUnicodeString(_Inout_ PUNICODE_STRING UnicodeString, _In_ PCSTR AsciiString)
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_UNSUCCESSFUL
◆ RtlLocaleNameToLcid()
Definition at line 841 of file locale.c.
845{
847
848
850
851
853}
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
static _Must_inspect_result_ NTSTATUS RtlpLocaleNameToLcidInternal(_In_ PCUNICODE_STRING LocaleName, _Out_ PLCID Lcid, _In_ ULONG Flags)
◆ RtlpInitializeLocaleTable()
Initializes the locale index table, that maps the LCIDs to their indexes in the alphabetical table, and is sorted by LCID.
Definition at line 515 of file locale.c.
516{
519
521 {
524
526 {
529 }
530
532 }
533
535}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
NTSTATUS NTAPI NtQueryDefaultLocale(IN BOOLEAN UserProfile, OUT PLCID DefaultLocaleId)
Referenced by DllMain(), LdrpInitializeProcess(), and Phase1InitializationDiscard().
◆ RtlpLocaleNameToLcidInternal()
Definition at line 781 of file locale.c.
785{
788
789
791 {
792 DPRINT1(
"RtlpLocaleNameToLcidInternal: Invalid buffer\n");
794 }
795
796
798 {
799 DPRINT1(
"RtlpLocaleNameToLcidInternal: Lcid is NULL\n");
801 }
802
803
805 {
806 DPRINT1(
"RtlpLocaleNameToLcidInternal: Invalid flags: 0x%lx\n",
Flags);
808 }
809
810
813 {
814 DPRINT(
"RtlpLocaleNameToLcidInternal: Locale name not found\n");
816 }
817
818
820
821
822 if ((
Flags & RTL_LOCALE_ALLOW_NEUTRAL_NAMES) == 0)
823 {
824
826 {
827 DPRINT(
"RtlpLocaleNameToLcidInternal: Neutral LCID: 0x%lx\n", FoundLcid);
829 }
830 }
831
832
834
836}
static _Must_inspect_result_ ULONG FindIndexByLocaleName(_In_ PCUNICODE_STRING LocaleName)
Referenced by RtlLocaleNameToLcid().
◆ RtlpLocaleIndexTable
◆ RtlpLocaleTable
◆ RtlpSystemDefaultLcid
| LCID RtlpSystemDefaultLcid |
◆ RtlpUserDefaultLcid