276 lines
7.5 KiB
C
276 lines
7.5 KiB
C
|
|
||
|
/*++ BUILD Version: 0003 // Increment this if a change has global effects
|
||
|
|
||
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
winnlsp.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Private procedure declarations, constant definitions, and macros for the
|
||
|
NLS component.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _WINNLSP_
|
||
|
#define _WINNLSP_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
|
||
|
//
|
||
|
// Flags for DLL Code Page Translation Function.
|
||
|
//
|
||
|
#define NLS_CP_CPINFO 0x10000000
|
||
|
#define NLS_CP_CPINFOEX 0x20000000
|
||
|
#define NLS_CP_MBTOWC 0x40000000
|
||
|
#define NLS_CP_WCTOMB 0x80000000
|
||
|
|
||
|
|
||
|
#define NORM_STOP_ON_NULL 0x10000000 // stop at the null termination
|
||
|
|
||
|
#define LCMAP_IGNOREDBCS 0x80000000 // don't casemap DBCS characters
|
||
|
|
||
|
#define LOCALE_IGEOID 0x0000005B // geographical location id
|
||
|
//
|
||
|
// LCType to represent the registry locale value
|
||
|
//
|
||
|
#define LOCALE_SLOCALE (-1)
|
||
|
#define DATE_ADDHIJRIDATETEMP 0x80000000 // use AddHijriDateTemp reg value
|
||
|
WINBASEAPI
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
InvalidateNLSCache(void);
|
||
|
|
||
|
|
||
|
//
|
||
|
// This private API is only called by the Complex Script
|
||
|
// Language Pack (CSLPK).
|
||
|
//
|
||
|
ULONG
|
||
|
WINAPI NlsGetCacheUpdateCount(void);
|
||
|
|
||
|
|
||
|
//
|
||
|
// This API is called only from intl.cpl when the user
|
||
|
// locale changes.
|
||
|
//
|
||
|
void
|
||
|
WINAPI
|
||
|
NlsResetProcessLocale(void);
|
||
|
|
||
|
//
|
||
|
// This API is called by system console Apps
|
||
|
//
|
||
|
LANGID
|
||
|
WINAPI
|
||
|
SetThreadUILanguage(WORD wReserved);
|
||
|
|
||
|
//
|
||
|
// This API can be used to verify if a UI language is installed.
|
||
|
//
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
IsValidUILanguage(LANGID UILangID);
|
||
|
//
|
||
|
// These definitions are used by both winnls and base\server
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// Names of Registry Value Entries.
|
||
|
//
|
||
|
#define NLS_VALUE_ACP L"ACP"
|
||
|
#define NLS_VALUE_OEMCP L"OEMCP"
|
||
|
#define NLS_VALUE_MACCP L"MACCP"
|
||
|
#define NLS_VALUE_DEFAULT L"Default"
|
||
|
|
||
|
// User Info
|
||
|
#define NLS_VALUE_LOCALE L"Locale"
|
||
|
#define NLS_VALUE_SLANGUAGE L"sLanguage"
|
||
|
#define NLS_VALUE_ICOUNTRY L"iCountry"
|
||
|
#define NLS_VALUE_SCOUNTRY L"sCountry"
|
||
|
#define NLS_VALUE_SLIST L"sList"
|
||
|
#define NLS_VALUE_IMEASURE L"iMeasure"
|
||
|
#define NLS_VALUE_IPAPERSIZE L"iPaperSize"
|
||
|
#define NLS_VALUE_SDECIMAL L"sDecimal"
|
||
|
#define NLS_VALUE_STHOUSAND L"sThousand"
|
||
|
#define NLS_VALUE_SGROUPING L"sGrouping"
|
||
|
#define NLS_VALUE_IDIGITS L"iDigits"
|
||
|
#define NLS_VALUE_ILZERO L"iLZero"
|
||
|
#define NLS_VALUE_INEGNUMBER L"iNegNumber"
|
||
|
#define NLS_VALUE_SNATIVEDIGITS L"sNativeDigits"
|
||
|
#define NLS_VALUE_IDIGITSUBST L"NumShape"
|
||
|
#define NLS_VALUE_SCURRENCY L"sCurrency"
|
||
|
#define NLS_VALUE_SMONDECIMALSEP L"sMonDecimalSep"
|
||
|
#define NLS_VALUE_SMONTHOUSANDSEP L"sMonThousandSep"
|
||
|
#define NLS_VALUE_SMONGROUPING L"sMonGrouping"
|
||
|
#define NLS_VALUE_ICURRDIGITS L"iCurrDigits"
|
||
|
#define NLS_VALUE_ICURRENCY L"iCurrency"
|
||
|
#define NLS_VALUE_INEGCURR L"iNegCurr"
|
||
|
#define NLS_VALUE_SPOSITIVESIGN L"sPositiveSign"
|
||
|
#define NLS_VALUE_SNEGATIVESIGN L"sNegativeSign"
|
||
|
#define NLS_VALUE_STIMEFORMAT L"sTimeFormat"
|
||
|
#define NLS_VALUE_STIME L"sTime"
|
||
|
#define NLS_VALUE_ITIME L"iTime"
|
||
|
#define NLS_VALUE_ITLZERO L"iTLZero"
|
||
|
#define NLS_VALUE_ITIMEMARKPOSN L"iTimePrefix"
|
||
|
#define NLS_VALUE_S1159 L"s1159"
|
||
|
#define NLS_VALUE_S2359 L"s2359"
|
||
|
#define NLS_VALUE_SSHORTDATE L"sShortDate"
|
||
|
#define NLS_VALUE_SDATE L"sDate"
|
||
|
#define NLS_VALUE_IDATE L"iDate"
|
||
|
#define NLS_VALUE_SYEARMONTH L"sYearMonth"
|
||
|
#define NLS_VALUE_SLONGDATE L"sLongDate"
|
||
|
#define NLS_VALUE_ICALENDARTYPE L"iCalendarType"
|
||
|
#define NLS_VALUE_IFIRSTDAYOFWEEK L"iFirstDayOfWeek"
|
||
|
#define NLS_VALUE_IFIRSTWEEKOFYEAR L"iFirstWeekOfYear"
|
||
|
|
||
|
|
||
|
//
|
||
|
// String constants for CreateSection/OpenSection name string.
|
||
|
//
|
||
|
#define NLS_SECTION_CPPREFIX L"\\NLS\\NlsSectionCP"
|
||
|
#define NLS_SECTION_LANGPREFIX L"\\NLS\\NlsSectionLANG"
|
||
|
|
||
|
#define NLS_SECTION_UNICODE L"\\NLS\\NlsSectionUnicode"
|
||
|
#define NLS_SECTION_LOCALE L"\\NLS\\NlsSectionLocale"
|
||
|
#define NLS_SECTION_CTYPE L"\\NLS\\NlsSectionCType"
|
||
|
#define NLS_SECTION_SORTKEY L"\\NLS\\NlsSectionSortkey"
|
||
|
#define NLS_SECTION_SORTTBLS L"\\NLS\\NlsSectionSortTbls"
|
||
|
#define NLS_SECTION_LANG_INTL L"\\NLS\\NlsSectionLANG_INTL"
|
||
|
#define NLS_SECTION_LANG_EXCEPT L"\\NLS\\NlsSectionLANG_EXCEPT"
|
||
|
#define NLS_SECTION_GEO L"\\NLS\\NlsSectionGeo"
|
||
|
|
||
|
//
|
||
|
// Unicode file names.
|
||
|
// These files will always be installed by setup in the system directory,
|
||
|
// so there is no need to put these names in the registry.
|
||
|
//
|
||
|
#define NLS_FILE_UNICODE L"unicode.nls"
|
||
|
#define NLS_FILE_LOCALE L"locale.nls"
|
||
|
#define NLS_FILE_CTYPE L"ctype.nls"
|
||
|
#define NLS_FILE_SORTKEY L"sortkey.nls"
|
||
|
#define NLS_FILE_SORTTBLS L"sorttbls.nls"
|
||
|
#define NLS_FILE_LANG_INTL L"l_intl.nls"
|
||
|
#define NLS_FILE_LANG_EXCEPT L"l_except.nls"
|
||
|
#define NLS_FILE_GEO L"geo.nls"
|
||
|
|
||
|
//
|
||
|
// Default file names if registry is corrupt.
|
||
|
//
|
||
|
#define NLS_DEFAULT_FILE_ACP L"c_1252.nls"
|
||
|
#define NLS_DEFAULT_FILE_OEMCP L"c_437.nls"
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Default section names if registry is corrupt.
|
||
|
//
|
||
|
#define NLS_DEFAULT_SECTION_ACP L"\\NLS\\NlsSectionCP1252"
|
||
|
#define NLS_DEFAULT_SECTION_OEMCP L"\\NLS\\NlsSectionCP437"
|
||
|
|
||
|
#ifdef _WINDOWS_BASE
|
||
|
//
|
||
|
// winnls routines that are called from base\server. The prototypes must
|
||
|
// continue to match the typedefs.
|
||
|
//
|
||
|
|
||
|
typedef ULONG
|
||
|
(*PNLS_CONVERT_INTEGER_TO_STRING)(
|
||
|
UINT Value,
|
||
|
UINT Base,
|
||
|
UINT Padding,
|
||
|
LPWSTR pResultBuf,
|
||
|
UINT Size);
|
||
|
ULONG
|
||
|
NlsConvertIntegerToString(
|
||
|
UINT Value,
|
||
|
UINT Base,
|
||
|
UINT Padding,
|
||
|
LPWSTR pResultBuf,
|
||
|
UINT Size);
|
||
|
|
||
|
typedef BOOL
|
||
|
(*PGET_CP_FILE_NAME_FROM_REGISTRY)(
|
||
|
UINT CodePage,
|
||
|
LPWSTR pResultBuf,
|
||
|
UINT Size);
|
||
|
BOOL
|
||
|
GetCPFileNameFromRegistry(
|
||
|
UINT CodePage,
|
||
|
LPWSTR pResultBuf,
|
||
|
UINT Size);
|
||
|
|
||
|
typedef ULONG
|
||
|
(*PCREATE_NLS_SECURITY_DESCRIPTOR)(
|
||
|
PSECURITY_DESCRIPTOR pSecurityDescriptor,
|
||
|
UINT SecurityDescriptorSize,
|
||
|
ACCESS_MASK AccessMask);
|
||
|
|
||
|
ULONG
|
||
|
CreateNlsSecurityDescriptor(
|
||
|
PSECURITY_DESCRIPTOR pSecurityDescriptor,
|
||
|
UINT SecurityDescriptorSize,
|
||
|
ACCESS_MASK AccessMask);
|
||
|
|
||
|
typedef ULONG
|
||
|
(*PGET_NLS_SECTION_NAME)(
|
||
|
UINT Value,
|
||
|
UINT Base,
|
||
|
UINT Padding,
|
||
|
LPWSTR pwszPrefix,
|
||
|
LPWSTR pwszSecName,
|
||
|
UINT cchSecName);
|
||
|
ULONG
|
||
|
GetNlsSectionName(
|
||
|
UINT Value,
|
||
|
UINT Base,
|
||
|
UINT Padding,
|
||
|
LPWSTR pwszPrefix,
|
||
|
LPWSTR pwszSecName,
|
||
|
UINT cchSecName);
|
||
|
|
||
|
|
||
|
typedef WINBASEAPI BOOL
|
||
|
(WINAPI *PIS_VALID_CODEPAGE)(
|
||
|
UINT CodePage);
|
||
|
WINBASEAPI BOOL WINAPI
|
||
|
IsValidCodePage(
|
||
|
UINT CodePage);
|
||
|
|
||
|
typedef ULONG
|
||
|
(*POPEN_DATA_FILE)(HANDLE *phFile, LPWSTR pFile);
|
||
|
ULONG OpenDataFile(HANDLE *phFile, LPWSTR pFile);
|
||
|
|
||
|
typedef ULONG
|
||
|
(*PGET_DEFAULT_SORTKEY_SIZE)(PLARGE_INTEGER pSize);
|
||
|
ULONG GetDefaultSortkeySize(PLARGE_INTEGER pSize);
|
||
|
|
||
|
typedef ULONG
|
||
|
(*PGET_LINGUIST_LANG_SIZE)(PLARGE_INTEGER pSize);
|
||
|
ULONG GetLinguistLangSize(PLARGE_INTEGER pSize);
|
||
|
|
||
|
typedef BOOL
|
||
|
(*PVALIDATE_LOCALE)(LCID Locale);
|
||
|
BOOL ValidateLocale(LCID Locale);
|
||
|
|
||
|
typedef BOOL
|
||
|
(*PVALIDATE_LCTYPE)(PVOID pInfo, LCTYPE LCType, LPWSTR *ppwReg, LPWSTR *ppwCache);
|
||
|
BOOL ValidateLCType(PNLS_USER_INFO pInfo, LCTYPE LCType, LPWSTR *ppwReg, LPWSTR *ppwCache);
|
||
|
|
||
|
typedef BOOL
|
||
|
(*PNLS_LOAD_STRING_EX_W)(HMODULE hModule, UINT wID, LPWSTR lpBuffer, int cchBufferMax, WORD wLangId);
|
||
|
int NlsLoadStringExW(HMODULE hModule, UINT wID, LPWSTR lpBuffer, int cchBufferMax, WORD wLangId);
|
||
|
|
||
|
#endif // _WINDOWS_BASE
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // _WINNLSP_
|