38#define _WIN32_WINNT DLL_EXPORT_VERSION
39#define WINVER DLL_EXPORT_VERSION
42#define LOCALE_SSHORTESTDAYNAME1 96
43#define LOCALE_SSHORTESTDAYNAME2 97
44#define LOCALE_SSHORTESTDAYNAME3 98
45#define LOCALE_SSHORTESTDAYNAME4 99
46#define LOCALE_SSHORTESTDAYNAME5 100
47#define LOCALE_SSHORTESTDAYNAME6 101
48#define LOCALE_SSHORTESTDAYNAME7 102
50#define CRITICAL_SECTION RTL_CRITICAL_SECTION
51#define CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG
52#define CALINFO_MAX_YEAR 2029
54#define IS_LCID_JAPANESE(lcid) PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_JAPANESE
56#ifndef CAL_SABBREVERASTRING
57 #define CAL_SABBREVERASTRING 0x00000039
72#include "wine/unicode.h"
76#include "kernel_private.h"
82#define DATE_DATEVARSONLY 0x0100
83#define TIME_TIMEVARSONLY 0x0200
94#define NLS_NUM_CACHED_STRINGS 57
110#define GetNegative(fmt) fmt->lppszStrings[0]
111#define GetLongDate(fmt) fmt->lppszStrings[1]
112#define GetShortDate(fmt) fmt->lppszStrings[2]
113#define GetTime(fmt) fmt->lppszStrings[3]
114#define GetAM(fmt) fmt->lppszStrings[54]
115#define GetPM(fmt) fmt->lppszStrings[55]
116#define GetYearMonth(fmt) fmt->lppszStrings[56]
118#define GetLongDay(fmt,day) fmt->lppszStrings[4 + day]
119#define GetShortDay(fmt,day) fmt->lppszStrings[11 + day]
120#define GetLongMonth(fmt,mth) fmt->lppszStrings[18 + mth]
121#define GetGenitiveMonth(fmt,mth) fmt->lppszStrings[30 + mth]
122#define GetShortMonth(fmt,mth) fmt->lppszStrings[42 + mth]
131 0, 0, { (
DWORD_PTR)(__FILE__
": NLS_Formats") }
148 if (szBuff[0] && szBuff[1] ==
';' && szBuff[2] !=
'0')
149 dwVal = (szBuff[0] -
'0') * 10 + (szBuff[2] -
'0');
152 const WCHAR* iter = szBuff;
154 while(*iter >=
'0' && *iter <=
'9')
155 dwVal = dwVal * 10 + (*iter++ -
'0');
179#define GET_LOCALE_NUMBER(num, type) num = NLS_GetLocaleNumber(lcid, type|dwFlags); \
180 TRACE( #type ": %d (%08x)\n", (DWORD)num, (DWORD)num)
182#define GET_LOCALE_STRING(str, type) str = NLS_GetLocaleString(lcid, type|dwFlags); \
183 TRACE( #type ": %s\n", debugstr_w(str))
193 static const LCTYPE NLS_LocaleIndices[] = {
241 TRACE(
"Creating new cache entry\n");
260 WARN(
"LOCALE_SGROUPING (%d) unhandled, please report!\n",
276 WARN(
"LOCALE_SMONGROUPING (%d) unhandled, please report!\n",
284 WARN(
"LOCALE_INEGCURR (%d) unhandled, please report!\n",
291 WARN(
"LOCALE_IPOSCURR (%d) unhandled,please report!\n",
305 for (
i = 0;
i < 12;
i++)
321 node = NLS_CachedFormats;
327 node = NLS_CachedFormats = new_node;
399#define IsLiteralMarker(p) (p == '\'')
400#define IsDateFmtChar(p) (p == 'd'||p == 'M'||p == 'y'||p == 'g')
401#define IsTimeFmtChar(p) (p == 'H'||p == 'h'||p == 'm'||p == 's'||p == 't')
405#define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY | DATE_USE_ALT_CALENDAR)
407#define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY)
409#define TIME_FORMAT_FLAGS (TIME_TIMEVARSONLY|TIME_FORCE24HOURFORMAT| \
410 TIME_NOMINUTESORSECONDS|TIME_NOSECONDS| \
429 INT lastFormatPos = 0;
435 goto invalid_parameter;
448 if ((
dwFlags & (DATE_LTRREADING|DATE_RTLREADING)) == (DATE_LTRREADING|DATE_RTLREADING))
450 else if (
dwFlags & (DATE_LTRREADING|DATE_RTLREADING))
451 FIXME(
"Unsupported flags: DATE_LTRREADING/DATE_RTLREADING\n");
497 memset(&st, 0,
sizeof(st));
503 goto invalid_parameter;
513 goto invalid_parameter;
537 else if (cchWritten >= cchOut)
553 int count = 0, dwLen;
565 if (fmtChar !=
'M') d_dd_formatted =
FALSE;
575 dwVal = lpTime->
wDay;
577 d_dd_formatted =
TRUE;
612 if (*
format !=
' ')
break;
619 while (*++
format ==
'd') dcount++;
669 dwVal = lpTime->
wYear;
674 dwVal = lpTime->
wYear % 100;
681 if (IS_LCID_JAPANESE(
lcid))
711 FIXME(
"Should be using GetCalendarInfo(CAL_SERASTRING), defaulting to 'AD'\n");
725 dwVal = lpTime->
wHour == 0 ? 12 : (lpTime->
wHour - 1) % 12 + 1;
733 dwVal = lpTime->
wHour;
740 cchWritten = lastFormatPos;
754 cchWritten = lastFormatPos;
768 cchWritten = lastFormatPos;
774 szAdd = lpTime->
wHour < 12 ?
node->szShortAM :
node->szShortPM;
781 if (szAdd ==
buff &&
buff[0] ==
'\0')
783 static const WCHAR fmtW[] = {
'%',
'.',
'*',
'd',0};
788 dwLen = szAdd ?
strlenW(szAdd) : 0;
792 if (cchWritten + dwLen < cchOut)
793 memcpy(lpStr + cchWritten, szAdd, dwLen *
sizeof(
WCHAR));
796 memcpy(lpStr + cchWritten, szAdd, (cchOut - cchWritten) *
sizeof(
WCHAR));
801 lastFormatPos = cchWritten;
808 else if (cchWritten >= cchOut)
810 else if (!bSkipping || *
lpFormat ==
' ')
822 if (cchWritten >= cchOut)
825 lpStr[cchWritten] =
'\0';
829 TRACE(
"returning length=%d, output=%s\n", cchWritten,
debugstr_w(lpStr));
833 TRACE(
"returning 0, (ERROR_INSUFFICIENT_BUFFER)\n");
856 WCHAR szFormat[128], szOut[128];
889 lpStr ? szOut :
NULL, cchOut);
895 else if (cchOut && iRet)
954#if _WIN32_WINNT >= 0x600
1062#if _WIN32_WINNT >= 0x600
1112#define NF_ISNEGATIVE 0x1
1113#define NF_ISREAL 0x2
1114#define NF_DIGITS 0x4
1115#define NF_DIGITS_OUT 0x8
1116#define NF_ROUND 0x10
1119#define NLS_NEG_PARENS 0
1120#define NLS_NEG_LEFT 1
1121#define NLS_NEG_LEFT_SPACE 2
1122#define NLS_NEG_RIGHT 3
1123#define NLS_NEG_RIGHT_SPACE 4
1132 LPWSTR lpNumberStr,
int cchOut)
1136 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc;
1137 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0;
1143 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpNumberStr) ||
1163 lpszNegStart = lpszNeg = szNegBuff;
1165 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1177 if (*szSrc >=
'0' && *szSrc <=
'9')
1183 else if (*szSrc ==
'-')
1189 else if (*szSrc ==
'.')
1214 while (lpszNeg >= lpszNegStart)
1215 *szOut-- = *lpszNeg--;
1227 while (*szSrc !=
'.')
1229 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1232 dwState &= ~NF_ROUND;
1242 if (dwDecimals <= lpFormat->NumDigits)
1244 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1245 while (dwDecimals--)
1252 while (dwDecimals--)
1254 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1257 dwState &= ~NF_ROUND;
1264 while (*szSrc !=
'.')
1272 dwState &= ~NF_ROUND;
1273 *szOut-- = (*szSrc)+1;
1278 *szOut-- = *szSrc--;
1283 while (lpszDec >=
lpFormat->lpDecimalSep)
1284 *szOut-- = *lpszDec--;
1290 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1298 dwState &= ~NF_ROUND;
1299 *szOut-- = (*szSrc)+1;
1304 *szOut-- = *szSrc--;
1307 dwCurrentGroupCount++;
1308 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1312 while (lpszGrp >=
lpFormat->lpThousandSep)
1313 *szOut-- = *lpszGrp--;
1315 dwCurrentGroupCount = 0;
1339 while (lpszNeg >= lpszNegStart)
1340 *szOut-- = *lpszNeg--;
1353 memcpy(lpNumberStr, szOut, cchOut *
sizeof(
WCHAR));
1354 lpNumberStr[cchOut - 1] =
'\0';
1366#if _WIN32_WINNT >= 0x600
1388#define CF_PARENS 0x1
1389#define CF_MINUS_LEFT 0x2
1390#define CF_MINUS_RIGHT 0x4
1391#define CF_MINUS_BEFORE 0x8
1392#define CF_CY_LEFT 0x10
1393#define CF_CY_RIGHT 0x20
1394#define CF_CY_SPACE 0x40
1403 LPWSTR lpCurrencyStr,
int cchOut)
1405 static const BYTE NLS_NegCyFormats[16] =
1424 static const BYTE NLS_PosCyFormats[4] =
1433 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc, *lpszCy, *lpszCyStart;
1434 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0, dwFmt;
1440 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpCurrencyStr) ||
1463 lpszNegStart = lpszNeg = szNegBuff;
1467 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1468 lpszCyStart =
lpFormat->lpCurrencySymbol;
1469 lpszCy = lpszCyStart +
strlenW(lpszCyStart) - 1;
1479 if (*szSrc >=
'0' && *szSrc <=
'9')
1485 else if (*szSrc ==
'-')
1491 else if (*szSrc ==
'.')
1507 dwFmt = NLS_NegCyFormats[
lpFormat->NegativeOrder];
1509 dwFmt = NLS_PosCyFormats[
lpFormat->PositiveOrder];
1521 while (lpszNeg >= lpszNegStart)
1522 *szOut-- = *lpszNeg--;
1523 dwFmt &= ~CF_MINUS_RIGHT;
1529 while (lpszCy >= lpszCyStart)
1530 *szOut-- = *lpszCy--;
1543 while (*szSrc !=
'.')
1545 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1548 dwState &= ~NF_ROUND;
1558 if (dwDecimals <= lpFormat->NumDigits)
1560 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1561 while (dwDecimals--)
1568 while (dwDecimals--)
1570 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1573 dwState &= ~NF_ROUND;
1580 while (*szSrc !=
'.')
1588 dwState &= ~NF_ROUND;
1589 *szOut-- = (*szSrc)+1;
1594 *szOut-- = *szSrc--;
1598 while (lpszDec >=
lpFormat->lpDecimalSep)
1599 *szOut-- = *lpszDec--;
1605 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1613 dwState &= ~NF_ROUND;
1614 *szOut-- = (*szSrc)+1;
1619 *szOut-- = *szSrc--;
1622 dwCurrentGroupCount++;
1623 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1627 while (lpszGrp >=
lpFormat->lpThousandSep)
1628 *szOut-- = *lpszGrp--;
1630 dwCurrentGroupCount = 0;
1647 while (lpszNeg >= lpszNegStart)
1648 *szOut-- = *lpszNeg--;
1649 dwFmt &= ~CF_MINUS_LEFT;
1657 while (lpszCy >= lpszCyStart)
1658 *szOut-- = *lpszCy--;
1671 memcpy(lpCurrencyStr, szOut, iRet *
sizeof(
WCHAR));
1674 memcpy(lpCurrencyStr, szOut, cchOut *
sizeof(
WCHAR));
1675 lpCurrencyStr[cchOut - 1] =
'\0';
1687#if _WIN32_WINNT >= 0x600
1746 case DATE_YEARMONTH:
1747 lctype = LOCALE_SYEARMONTH;
1750 FIXME(
"Unknown date format (0x%08x)\n", ctxt->
flags);
1833#if _WIN32_WINNT >= 0x600
1842 ctxt.u.callbackexex =
proc;
1846 ctxt.unicode =
TRUE;
1874 FIXME(
"Unknown time format (%d)\n", ctxt->
flags);
1919#if _WIN32_WINNT >= 0x600
1928 ctxt.u.callbackex =
proc;
1932 ctxt.unicode =
TRUE;
2000 if (ctxt->
caltype & CAL_RETURN_NUMBER)
2016 ERR(
"Buffer resizing disorder: was %d, requested %d.\n", bufSz, newSz);
2020 WARN(
"Buffer too small; resizing to %d bytes.\n", bufSz);
2053 if ((iter ==
NULL) || (*iter == 0))
2057 while ((*iter >=
'0') && (*iter <=
'9'))
2118#if _WIN32_WINNT >= 0x600
2127 TRACE(
"(%p,%s,0x%08x,%p,0x%08x,0x%ld)\n", calinfoproc,
debugstr_w(
locale),
calendar,
reserved,
caltype,
lParam);
2130 ctxt.u.callbackexex = calinfoproc;
2135 ctxt.unicode =
TRUE;
2147 static const LCTYPE caltype_lctype_map[] = {
2197#if (WINVER >= 0x0600)
2198 LOCALE_SSHORTESTDAYNAME1,
2199 LOCALE_SSHORTESTDAYNAME2,
2200 LOCALE_SSHORTESTDAYNAME3,
2201 LOCALE_SSHORTESTDAYNAME4,
2202 LOCALE_SSHORTESTDAYNAME5,
2203 LOCALE_SSHORTESTDAYNAME6,
2204 LOCALE_SSHORTESTDAYNAME7,
2209 DWORD localeflags = 0;
2212 if (CalType & CAL_NOUSEROVERRIDE)
2213 FIXME(
"flag CAL_NOUSEROVERRIDE used, not fully implemented\n");
2214 if (CalType & CAL_USE_CP_ACP)
2215 FIXME(
"flag CAL_USE_CP_ACP used, not fully implemented\n");
2217 if (CalType & CAL_RETURN_NUMBER) {
2223 if (lpCalData !=
NULL)
2224 WARN(
"lpCalData not NULL (%p) when it should!\n", lpCalData);
2226 WARN(
"cchData not 0 (%d) when it should!\n", cchData);
2228 if (lpValue !=
NULL)
2229 WARN(
"lpValue not NULL (%p) when it should!\n", lpValue);
2235 calinfo = CalType & 0xffff;
2240 if (CalType & CAL_RETURN_GENITIVE_NAMES)
2247 if (IS_LCID_JAPANESE(Locale))
2249 if (CalType & CAL_RETURN_NUMBER)
2256 static const WCHAR fmtW[] = {
'%',
'u',0};
2259 if (!lpCalData)
return ret;
2270 if (CalType & CAL_RETURN_NUMBER)
2276 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2279 lpCalData[0] = 0x548C;
2280 lpCalData[1] = 0x66A6;
2285 FIXME(
"Unimplemented caltype %d\n", calinfo);
2286 if (lpCalData) *lpCalData = 0;
2290 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2295 if (CalType & CAL_RETURN_NUMBER)
2297 *lpValue = pEra->
wYear;
2302 static const WCHAR fmtW[] = {
'%',
'u',0};
2305 if (!lpCalData)
return ret;
2322 FIXME(
"Unimplemented caltype %d\n", calinfo);
2326 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2332 return strlenW(lpCalData) + 1;
2341 FIXME(
"Unimplemented caltype %d\n", calinfo);
2386 return GetLocaleInfoW(Locale, caltype_lctype_map[calinfo] | localeflags, lpCalData, cchData);
2389 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2391 if (CalType & CAL_RETURN_NUMBER)
2398 static const WCHAR fmtW[] = {
'%',
'u',0};
2401 if (!lpCalData)
return ret;
2412 if (CalType & CAL_RETURN_NUMBER)
2419 static const WCHAR fmtW[] = {
'%',
'u',0};
2422 if (!lpCalData)
return ret;
2434 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2440 return strlenW(lpCalData) + 1;
2447 FIXME(
"Unknown caltype %d\n", calinfo);
2454#if _WIN32_WINNT >= 0x600
2465 FIXME(
"(%s, %d, %p, 0x%08x, %p, %d, %p): semi-stub\n",
debugstr_w(
locale),
calendar,
lpReserved,
caltype,
2479 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2480 Locale, Calendar, CalType,
debugstr_w(lpCalData));
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define DEBUG_CHANNEL(args)
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_PARAMETER
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
static void cleanup(void)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
VOID WINAPI GetLocalTime(OUT LPSYSTEMTIME lpSystemTime)
LCID WINAPI LocaleNameToLCID(_In_ LPCWSTR lpName, _In_ DWORD dwFlags)
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
BOOL WINAPI IsValidLocale(LCID lcid, DWORD flags)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
LCID WINAPI ConvertDefaultLocale(LCID lcid)
BOOL WINAPI DECLSPEC_HOTPATCH EnumDateFormatsExEx(DATEFMT_ENUMPROCEXEX proc, const WCHAR *locale, DWORD flags, LPARAM lparam)
int WINAPI GetNumberFormatEx(const WCHAR *name, DWORD flags, const WCHAR *value, const NUMBERFMTW *format, WCHAR *buffer, int len)
int WINAPI GetDateFormatEx(const WCHAR *name, DWORD flags, const SYSTEMTIME *systime, const WCHAR *format, WCHAR *buffer, int len, const WCHAR *calendar)
int WINAPI GetCurrencyFormatEx(const WCHAR *name, DWORD flags, const WCHAR *value, const CURRENCYFMTW *format, WCHAR *buffer, int len)
BOOL WINAPI DECLSPEC_HOTPATCH EnumCalendarInfoExEx(CALINFO_ENUMPROCEXEX proc, LPCWSTR locale, CALID id, LPCWSTR reserved, CALTYPE type, LPARAM lparam)
int WINAPI GetTimeFormatEx(const WCHAR *name, DWORD flags, const SYSTEMTIME *systime, const WCHAR *format, WCHAR *buffer, int len)
BOOL WINAPI DECLSPEC_HOTPATCH EnumTimeFormatsEx(TIMEFMT_ENUMPROCEX proc, const WCHAR *locale, DWORD flags, LPARAM lparam)
INT WINAPI DECLSPEC_HOTPATCH GetCalendarInfoEx(const WCHAR *name, CALID calendar, const WCHAR *reserved, CALTYPE type, WCHAR *buffer, INT len, DWORD *value)
static unsigned char buff[32768]
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLuint GLsizei bufsize
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
BOOL JapaneseEra_IsFirstYearGannen(void)
PCJAPANESE_ERA JapaneseEra_Find(const SYSTEMTIME *pst OPTIONAL)
#define JAPANESE_MAX_TWODIGITYEAR
#define memcpy(s1, s2, n)
static unsigned int number
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
NTSTRSAFEAPI RtlStringCbCopyW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
NTSTRSAFEAPI RtlStringCchCopyW(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cchDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
LIST_ENTRY ProcessLocksList
enum enum_callback_type type
CALINFO_ENUMPROCEXW callbackex
CALINFO_ENUMPROCW callback
CALINFO_ENUMPROCEXEX callbackexex
union enumcalendar_context::@454 u
union enumdateformats_context::@452 u
DATEFMT_ENUMPROCEXW callbackex
DATEFMT_ENUMPROCW callback
DATEFMT_ENUMPROCEXEX callbackexex
enum enum_callback_type type
union enumtimeformats_context::@453 u
TIMEFMT_ENUMPROCW callback
TIMEFMT_ENUMPROCEX callbackex
enum enum_callback_type type
DWORD WINAPI GetLastError(void)
#define ERROR_INVALID_FLAGS
#define LOCALE_USE_CP_ACP
#define LOCALE_SABBREVMONTHNAME10
#define LOCALE_SMONTHNAME12
#define LOCALE_SMONTHNAME5
_In_ DWORD _In_ int _In_ int _In_opt_ LPNLSVERSIONINFO _In_opt_ LPVOID lpReserved
#define CAL_SABBREVMONTHNAME8
#define CAL_SABBREVMONTHNAME6
#define CAL_SABBREVMONTHNAME12
#define LOCALE_SABBREVMONTHNAME9
#define LOCALE_SABBREVMONTHNAME11
#define LOCALE_SABBREVDAYNAME5
#define LOCALE_SABBREVDAYNAME2
#define LOCALE_SABBREVMONTHNAME2
BOOL(CALLBACK * CALINFO_ENUMPROCW)(LPWSTR)
#define LOCALE_SMONTHNAME13
#define CAL_SABBREVMONTHNAME9
#define CAL_SABBREVMONTHNAME10
#define LOCALE_SMONTHNAME3
#define LOCALE_SSHORTTIME
#define LOCALE_SMONTHNAME11
#define LOCALE_SMONTHNAME8
#define CAL_SABBREVMONTHNAME7
#define LOCALE_SMONTHNAME4
BOOL(CALLBACK * TIMEFMT_ENUMPROCEX)(LPWSTR, LPARAM)
#define CAL_SABBREVDAYNAME7
#define LOCALE_SABBREVMONTHNAME13
#define CAL_SABBREVDAYNAME5
#define CAL_ITWODIGITYEARMAX
#define CAL_SABBREVMONTHNAME11
BOOL(CALLBACK * DATEFMT_ENUMPROCW)(LPWSTR)
#define CAL_SABBREVMONTHNAME1
#define LOCALE_SMONTHNAME7
BOOL(CALLBACK * DATEFMT_ENUMPROCEXEX)(LPWSTR, CALID, LPARAM)
#define CAL_SABBREVMONTHNAME3
#define LOCALE_SSHORTDATE
#define TIME_NOTIMEMARKER
#define TIME_NOMINUTESORSECONDS
#define LOCALE_SABBREVMONTHNAME4
#define CAL_SABBREVMONTHNAME5
#define LOCALE_SABBREVDAYNAME4
#define LOCALE_SMONDECIMALSEP
#define LOCALE_SMONTHNAME1
#define LOCALE_SABBREVMONTHNAME3
#define LOCALE_SMONTHOUSANDSEP
#define LOCALE_SABBREVMONTHNAME1
#define LOCALE_NOUSEROVERRIDE
#define LOCALE_IOPTIONALCALENDAR
#define CAL_SABBREVDAYNAME6
#define CAL_SABBREVDAYNAME4
#define LOCALE_IDEFAULTANSICODEPAGE
#define LOCALE_SABBREVDAYNAME6
#define LOCALE_SMONTHNAME2
#define LOCALE_STIMEFORMAT
#define LOCALE_SABBREVDAYNAME1
#define ENUM_ALL_CALENDARS
#define LOCALE_SABBREVMONTHNAME6
#define LOCALE_SMONTHNAME6
BOOL(CALLBACK * DATEFMT_ENUMPROCEXW)(LPWSTR, CALID)
#define LOCALE_INEGNUMBER
#define LOCALE_SNEGATIVESIGN
BOOL(CALLBACK * TIMEFMT_ENUMPROCW)(LPWSTR)
#define TIME_FORCE24HOURFORMAT
#define LOCALE_SABBREVDAYNAME3
#define DATE_USE_ALT_CALENDAR
#define CAL_IYEAROFFSETRANGE
BOOL(CALLBACK * CALINFO_ENUMPROCEXEX)(LPWSTR, CALID, LPWSTR, LPARAM)
#define LOCALE_SABBREVMONTHNAME5
#define CAL_SABBREVMONTHNAME2
#define LOCALE_SABBREVMONTHNAME7
#define LOCALE_ICALENDARTYPE
BOOL(CALLBACK * DATEFMT_ENUMPROCEXA)(LPSTR, CALID)
#define LOCALE_SABBREVMONTHNAME8
#define CAL_SABBREVDAYNAME2
#define LOCALE_SMONTHNAME10
#define LOCALE_SMONTHNAME9
BOOL(CALLBACK * CALINFO_ENUMPROCEXW)(LPWSTR, CALID)
#define CAL_SABBREVMONTHNAME13
#define LOCALE_SABBREVMONTHNAME12
#define CAL_SABBREVMONTHNAME4
#define CAL_SABBREVDAYNAME3
#define CAL_SABBREVDAYNAME1
#define LOCALE_RETURN_GENITIVE_NAMES
#define LOCALE_SABBREVDAYNAME7