27 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
28 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
29 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
30 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
31 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
32 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
33 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
34 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0
38 static const unsigned char UTF8Mask[6] = {0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01};
42 {0, 0x80, 0x800, 0x10000, 0x200000, 0x2000000, 0xFFFFFFFF};
168 CurrentEntry = CurrentEntry->
Flink)
198 CHAR SectionName[40];
201 PBYTE SectionMapping;
221 sizeof(CodePage) /
sizeof(
WCHAR)))
234 sizeof(CodePage) /
sizeof(
WCHAR)))
243 if (CodePageEntry !=
NULL)
245 return CodePageEntry;
259 "\\Nls\\NlsSectionCP",
261 sizeof(SectionName)))
326 if (SectionMapping ==
NULL)
334 if (CodePageEntry ==
NULL)
351 return CodePageEntry;
371 LPCSTR MbsEnd, MbsPtrSave;
372 UCHAR Char, TrailLength;
375 BOOL CharIsValid, StringIsValid =
TRUE;
376 const WCHAR InvalidChar = 0xFFFD;
385 if (WideCharCount == 0)
397 if ((Char & 0xC0) == 0x80)
400 StringIsValid =
FALSE;
405 if (TrailLength == 0)
407 StringIsValid =
FALSE;
413 WideChar = Char &
UTF8Mask[TrailLength];
419 CharIsValid = StringIsValid =
FALSE;
436 StringIsValid =
FALSE;
445 return WideCharCount;
455 *WideCharString++ = Char;
459 if ((Char & 0xC0) == 0x80)
461 *WideCharString++ = InvalidChar;
463 StringIsValid =
FALSE;
468 if (TrailLength == 0)
470 *WideCharString++ = InvalidChar;
471 StringIsValid =
FALSE;
477 WideChar = Char &
UTF8Mask[TrailLength];
483 CharIsValid = StringIsValid =
FALSE;
493 *WideCharString++ = WideChar;
497 *WideCharString++ = InvalidChar;
499 StringIsValid =
FALSE;
505 *WideCharString = InvalidChar;
553 if (CodePageEntry ==
NULL)
584 while (TempString < MbsEnd)
591 if (((TempString + 1) == MbsEnd) || (*(TempString + 1) == 0))
610 WideChar = MultiByteTable[(
UCHAR)*TempString];
615 (WideChar >= 0xE000 && WideChar <= 0xF8FF))
627 if (WideCharCount == 0)
642 return WideCharCount;
653 *WideCharString++ = MultiByteTable[Char];
682 TempString++, TempLength--)
684 WideChar = MultiByteTable[(
UCHAR)*TempString];
689 (WideChar >= 0xE000 && WideChar <= 0xF8FF))
698 if (WideCharCount == 0)
699 return MultiByteCount;
702 for (TempLength = (WideCharCount < MultiByteCount) ? WideCharCount : MultiByteCount;
710 if (WideCharCount < MultiByteCount)
712 MultiByteCount = WideCharCount;
716 return MultiByteCount;
748 if (WideCharCount == 0)
750 return MultiByteCount;
753 WideCharMaxLen = WideCharCount > MultiByteCount ? MultiByteCount : WideCharCount;
760 WideCharString[
Count] = Char;
764 WideCharString[
Count] = Char + 0xf000;
767 if (MultiByteCount > WideCharMaxLen)
773 return WideCharMaxLen;
803 if (MultiByteCount == 0)
805 return WideCharCount;
808 MaxLen = MultiByteCount > WideCharCount ? WideCharCount : MultiByteCount;
811 Char = WideCharString[
Count];
818 if ((Char >= 0xf020) && (Char < 0xf100))
830 if (WideCharCount > MaxLen)
867 if (MultiByteCount == 0)
869 for (TempLength = 0; WideCharCount;
870 WideCharCount--, WideCharString++)
873 if (*WideCharString >= 0x80)
876 if (*WideCharString >= 0x800)
879 if (*WideCharString >= 0xd800 && *WideCharString < 0xdc00 &&
880 WideCharCount >= 1 &&
881 WideCharString[1] >= 0xdc00 && WideCharString[1] <= 0xe000)
893 for (TempLength = MultiByteCount; WideCharCount; WideCharCount--, WideCharString++)
895 Char = *WideCharString;
923 if (Char >= 0xd800 && Char < 0xdc00 &&
924 WideCharCount >= 1 &&
925 WideCharString[1] >= 0xdc00 && WideCharString[1] < 0xe000)
936 Char = (Char - 0xd800) << 10;
937 Char |= *WideCharString - 0xdc00;
964 return MultiByteCount - TempLength;
1049 if (CodePageEntry ==
NULL)
1062 if (
Flags || DefaultChar || UsedDefaultChar)
1064 BOOL TempUsedDefaultChar;
1069 if (!UsedDefaultChar)
1070 UsedDefaultChar = &TempUsedDefaultChar;
1072 *UsedDefaultChar =
FALSE;
1076 DefChar = DefaultChar[1] ? ((DefaultChar[0] << 8) | DefaultChar[1]) : DefaultChar[0];
1081 if (!MultiByteCount)
1083 for (TempLength = 0; WideCharCount; WideCharCount--, WideCharString++, TempLength++)
1090 DPRINT(
"WC_COMPOSITECHECK flag UNIMPLEMENTED\n");
1099 *UsedDefaultChar =
TRUE;
1111 for (TempLength = MultiByteCount;
1112 WideCharCount && TempLength;
1113 TempLength--, WideCharString++, WideCharCount--)
1120 DPRINT(
"WC_COMPOSITECHECK flag UNIMPLEMENTED\n");
1129 *UsedDefaultChar =
TRUE;
1136 if (TempLength == 1)
1153 return MultiByteCount - TempLength;
1157 if (!MultiByteCount)
1159 for (TempLength = 0; WideCharCount; WideCharCount--, WideCharString++, TempLength++)
1170 for (TempLength = MultiByteCount;
1171 WideCharCount && TempLength;
1172 TempLength--, WideCharString++, WideCharCount--)
1180 if (TempLength == 1)
1197 return MultiByteCount - TempLength;
1204 if (
Flags || DefaultChar || UsedDefaultChar)
1206 BOOL TempUsedDefaultChar;
1211 if (!UsedDefaultChar)
1212 UsedDefaultChar = &TempUsedDefaultChar;
1214 *UsedDefaultChar =
FALSE;
1217 if (!MultiByteCount)
1220 for (TempLength = 0; WideCharCount; TempLength++, WideCharString++, WideCharCount--)
1225 DPRINT(
"WC_COMPOSITECHECK flag UNIMPLEMENTED\n");
1228 if (!*UsedDefaultChar)
1240 DefChar = *DefaultChar;
1245 for (TempLength = MultiByteCount;
1246 WideCharCount && TempLength;
1252 DPRINT(
"WC_COMPOSITECHECK flag UNIMPLEMENTED\n");
1260 *UsedDefaultChar =
TRUE;
1271 return MultiByteCount - TempLength;
1275 if (!MultiByteCount)
1276 return WideCharCount;
1279 if (MultiByteCount < WideCharCount)
1282 WideCharCount = MultiByteCount;
1289 nReturn = WideCharCount;
1293 for (TempLength = WideCharCount; --TempLength >= 0; WideCharString++,
MultiByteString++)
1405 WCHAR ValueNameBuffer[11];
1418 ValueName.MaximumLength =
sizeof(ValueNameBuffer);
1425 L"CurrentControlSet\\Control\\Nls\\CodePage");
1445 Kvpi, KvpiSize, &KvpiSize);
1481 if (CodePage == 0)
return FALSE;
1506 static const signed char base64_decoding_table[] =
1508 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1509 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
1511 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
1512 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1513 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
1514 -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
1515 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
1521 DWORD byte_pair = 0;
1524 while (
src < source_end)
1529 if (
src >= source_end)
1546 signed char sextet = *
src;
1563 sextet = base64_decoding_table[sextet];
1573 byte_pair = (byte_pair << 6) | sextet;
1589 while (
src < source_end);
1648 MultiByteCount == 0 || WideCharCount < 0 ||
1649 (WideCharCount && (WideCharString ==
NULL ||
1657 if (MultiByteCount < 0)
1678 WideCharString, WideCharCount);
1698 static const BOOL directly_encodable_table[] =
1700 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
1701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1702 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,
1703 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
1704 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1705 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
1706 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1707 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1710 return codepoint <= 0x7A ? directly_encodable_table[codepoint] :
FALSE;
1730 static const char base64_encoding_table[] =
1731 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
1736 while (
src < source_end)
1764 DWORD byte_pair = 0;
1774 byte_pair = (byte_pair << 16) | *
src;
1798 byte_pair <<= (6 -
offset);
1875 for (
i = 0;
i < (uID & 0x0F);
i++)
1882 if (*
p + 1 > cchDest)
1905 DPRINT1(
"Resource not found: uID = %lu\n", uID);
1927 if (CodePageEntry ==
NULL)
1940 DPRINT1(
"Invalid CP!: %lx\n", CodePage);
1980 lpCPInfoEx->CodePage =
CP_UTF7;
1981 lpCPInfoEx->UnicodeDefaultChar = 0x3f;
1983 lpCPInfoEx->CodePageName,
1984 ARRAYSIZE(lpCPInfoEx->CodePageName)) != 0;
1990 lpCPInfoEx->CodePage =
CP_UTF8;
1991 lpCPInfoEx->UnicodeDefaultChar = 0x3f;
1993 lpCPInfoEx->CodePageName,
1994 ARRAYSIZE(lpCPInfoEx->CodePageName)) != 0;
2002 if (CodePageEntry ==
NULL)
2004 DPRINT1(
"Could not get CodePage Entry! CodePageEntry = NULL\n");
2012 lpCPInfoEx->CodePageName,
2013 ARRAYSIZE(lpCPInfoEx->CodePageName)) != 0;
2099 if (WideCharString ==
NULL ||
2100 WideCharCount == 0 ||
2110 if (WideCharCount < 0)
2112 WideCharCount =
lstrlenW(WideCharString) + 1;
2118 if (DefaultChar !=
NULL || UsedDefaultChar !=
NULL)
2133 if (DefaultChar !=
NULL || UsedDefaultChar !=
NULL)
2147 if ((DefaultChar!=
NULL) || (UsedDefaultChar!=
NULL))
2215 if (CodePageEntry !=
NULL)
#define STATUS_OBJECT_NAME_COLLISION
#define ERROR_INVALID_PARAMETER
#define FILE_GENERIC_READ
static INT WINAPI IntMultiByteToWideCharUTF8(DWORD Flags, LPCSTR MultiByteString, INT MultiByteCount, LPWSTR WideCharString, INT WideCharCount)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
BOOL WINAPI IsValidUILanguage(LANGID langid)
BOOL WINAPI GetCPInfo(UINT CodePage, LPCPINFO CodePageInfo)
#define LOCALE_IDEFAULTANSICODEPAGE
static CODEPAGE_ENTRY AnsiCodePage
static INT Utf7ToWideChar(const char *src, int srclen, WCHAR *dst, int dstlen)
static const struct update_accum a3
#define MB_ERR_INVALID_CHARS
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
static INT WideCharToUtf7(const WCHAR *src, int srclen, char *dst, int dstlen)
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
#define OBJ_CASE_INSENSITIVE
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
ACPI_SIZE strlen(const char *String)
static INT WINAPI IntWideCharToMultiByteSYMBOL(DWORD Flags, LPCWSTR WideCharString, INT WideCharCount, LPSTR MultiByteString, INT MultiByteCount)
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
static LIST_ENTRY CodePageListHead
static const char UTF8Length[128]
WCHAR CodePageName[MAX_PATH]
BOOL WINAPI ValidateLocale(IN ULONG LocaleId)
BOOL WINAPI ValidateLCType(int a1, unsigned int a2, int a3, int a4)
VOID WINAPI GetLinguistLangSize(LPVOID lpUnknown)
BOOL WINAPI IsNLSDefinedString(IN NLS_FUNCTION Function, IN DWORD dwFlags, IN LPNLSVERSIONINFO lpVersionInformation, IN LPCWSTR lpString, IN INT cchStr)
IN PDCB IN POEM_STRING IN PUNICODE_STRING UnicodeName
#define LOCALE_IDEFAULTMACCODEPAGE
BOOL WINAPI GetNLSVersionEx(IN NLS_FUNCTION function, IN LPCWSTR lpLocaleName, IN OUT LPNLSVERSIONINFOEX lpVersionInformation)
static const unsigned long UTF8LBound[]
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define INVALID_HANDLE_VALUE
IN PVOID IN PVOID IN USHORT IN USHORT Size
LPVOID WINAPI LockResource(HGLOBAL handle)
static const struct update_accum a4
INT WINAPI WideCharToMultiByte(UINT CodePage, DWORD Flags, LPCWSTR WideCharString, INT WideCharCount, LPSTR MultiByteString, INT MultiByteCount, LPCSTR DefaultChar, LPBOOL UsedDefaultChar)
LCID WINAPI GetUserDefaultLCID(void)
#define InsertTailList(ListHead, Entry)
NTSYSAPI NTSTATUS NTAPI RtlIntegerToChar(_In_ ULONG Value, _In_ ULONG Base, _In_ ULONG Length, _Out_ PCHAR String)
PCODEPAGE_ENTRY FASTCALL IntGetLoadedCodePageEntry(UINT CodePage)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
static INT WINAPI IntWideCharToMultiByteUTF8(UINT CodePage, DWORD Flags, LPCWSTR WideCharString, INT WideCharCount, LPSTR MultiByteString, INT MultiByteCount, LPCSTR DefaultChar, LPBOOL UsedDefaultChar)
#define SUBLANG_ENGLISH_US
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
static INT WINAPI IntMultiByteToWideCharSYMBOL(DWORD Flags, LPCSTR MultiByteString, INT MultiByteCount, LPWSTR WideCharString, INT WideCharCount)
BOOL WINAPI NlsResetProcessLocale(VOID)
BOOL WINAPI IsDBCSLeadByteEx(UINT CodePage, BYTE TestByte)
static BOOL utf7_write_c(char *dst, int dstlen, int *index, char character)
VOID WINAPI GetDefaultSortkeySize(LPVOID lpUnknown)
LCID WINAPI ConvertDefaultLocale(LCID lcid)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSTATUS NTAPI NtOpenSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
static BOOL IntIsValidSBCSMapping(PCPTABLEINFO CodePageTable, DWORD Flags, WCHAR wch, UCHAR ch)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
BOOL WINAPI IsDBCSLeadByte(BYTE TestByte)
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
ULONG WINAPI NlsGetCacheUpdateCount(VOID)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
UCHAR LeadByte[MAXIMUM_LEADBYTES]
struct _LIST_ENTRY * Flink
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
VOID WINAPI NlsConvertIntegerToString(ULONG Value, ULONG Base, ULONG strsize, LPWSTR str, ULONG strsize2)
NTSYSAPI NTSTATUS NTAPI RtlIntegerToUnicodeString(ULONG Value, ULONG Base, PUNICODE_STRING String)
NTSYSAPI NTSTATUS NTAPI NtQueryValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
_Must_inspect_result_ _In_ ULONG Flags
static INT WINAPI IntMultiByteToWideCharCP(UINT CodePage, DWORD Flags, LPCSTR MultiByteString, INT MultiByteCount, LPWSTR WideCharString, INT WideCharCount)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
NTSTATUS WINAPI CreateNlsSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG Size, ULONG AccessMask)
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define NT_SUCCESS(StatCode)
USHORT TransUniDefaultChar
static const struct update_accum a2
BYTE LeadByte[MAX_LEADBYTES]
USHORT MaximumCharacterSize
static DWORD LPDWORD LPCSTR DWORD srclen
BOOL WINAPI GetNLSVersion(IN NLS_FUNCTION Function, IN LCID Locale, IN OUT LPNLSVERSIONINFO lpVersionInformation)
PCODEPAGE_ENTRY FASTCALL IntGetCodePageEntry(UINT CodePage)
#define LOCALE_SYSTEM_DEFAULT
_In_ ACCESS_MASK AccessMask
#define STATUS_OBJECT_PATH_NOT_FOUND
static BOOL WINAPI IntIsLeadByte(PCPTABLEINFO TableInfo, BYTE Byte)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define WC_NO_BEST_FIT_CHARS
#define STATUS_UNSUCCESSFUL
#define ERROR_NO_UNICODE_TRANSLATION
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING _In_ PCUNICODE_STRING _In_ LCID LocaleId
static CODEPAGE_ENTRY OemCodePage
static BOOL IntIsValidDBCSMapping(PCPTABLEINFO CodePageTable, DWORD Flags, WCHAR wch, USHORT ch)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
static INT WINAPI IntWideCharToMultiByteCP(UINT CodePage, DWORD Flags, LPCWSTR WideCharString, INT WideCharCount, LPSTR MultiByteString, INT MultiByteCount, LPCSTR DefaultChar, LPBOOL UsedDefaultChar)
HRSRC WINAPI FindResourceExW(HMODULE hModule, LPCWSTR type, LPCWSTR name, WORD lang)
CHAR CodePageName[MAX_PATH]
static RTL_CRITICAL_SECTION CodePageListLock
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define memcpy(s1, s2, n)
#define LANGIDFROMLCID(l)
#define MAXIMUM_LEADBYTES
VOID NTAPI RtlInitCodePageTable(IN PUSHORT TableBase, OUT PCPTABLEINFO CodePageTable)
BOOL WINAPI GetCPFileNameFromRegistry(UINT CodePage, LPWSTR FileName, ULONG FileNameSize)
INT WINAPI MultiByteToWideChar(UINT CodePage, DWORD Flags, LPCSTR MultiByteString, INT MultiByteCount, LPWSTR WideCharString, INT WideCharCount)
BOOL WINAPI GetNlsSectionName(UINT CodePage, UINT Base, ULONG Unknown, LPSTR BaseName, LPSTR Result, ULONG ResultSize)
UINT GetLocalisedText(IN UINT uID, IN LPWSTR lpszDest, IN UINT cchDest)
NTSTATUS NTAPI NtCreateDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
BOOL WINAPI IsValidCodePage(UINT CodePage)
int WINAPI lstrlenA(LPCSTR lpString)
#define STATUS_OBJECT_NAME_NOT_FOUND
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
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 WC_COMPOSITECHECK
BOOL WINAPI GetCPInfoExA(UINT CodePage, DWORD dwFlags, LPCPINFOEXA lpCPInfoEx)
BYTE DefaultChar[MAX_DEFAULTCHAR]
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
struct _KEY_VALUE_PARTIAL_INFORMATION KEY_VALUE_PARTIAL_INFORMATION
#define InitializeListHead(ListHead)
#define DIRECTORY_ALL_ACCESS
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
static const unsigned char UTF8Mask[6]
*BytesInMultiByteString PCHAR MultiByteString
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
BOOL WINAPI GetCPInfoExW(UINT CodePage, DWORD dwFlags, LPCPINFOEXW lpCPInfoEx)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
_In_ PFCB _In_ PCD_NAME DirName
_Out_ PCPTABLEINFO CodePageTable
#define InitializeObjectAttributes(p, n, a, r, s)
static BOOL utf7_write_w(WCHAR *dst, int dstlen, int *index, WCHAR character)
static BOOL utf7_can_directly_encode(WCHAR codepoint)
static const struct update_accum a1
#define MAKEINTRESOURCEW(i)
NTSYSAPI NTSTATUS NTAPI RtlDeleteCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
VOID FASTCALL NlsUninit(VOID)
BOOL FASTCALL NlsInit(VOID)
UINT WINAPI SetCPGlobal(UINT CodePage)
#define HeapFree(x, y, z)
#define ERROR_INVALID_FLAGS
base of all file and directory entries
CPTABLEINFO CodePageTable
LCID WINAPI GetThreadLocale(void)
#define ERROR_INSUFFICIENT_BUFFER
UINT WINAPI GetOEMCP(VOID)