34#define CRITICAL_SECTION RTL_CRITICAL_SECTION
35#define CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG
36#define CALINFO_MAX_YEAR 2029
38#define IS_LCID_JAPANESE(lcid) PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_JAPANESE
40#ifndef CAL_SABBREVERASTRING
41 #define CAL_SABBREVERASTRING 0x00000039
56#include "wine/unicode.h"
60#include "kernel_private.h"
66#define DATE_DATEVARSONLY 0x0100
67#define TIME_TIMEVARSONLY 0x0200
78#define NLS_NUM_CACHED_STRINGS 57
94#define GetNegative(fmt) fmt->lppszStrings[0]
95#define GetLongDate(fmt) fmt->lppszStrings[1]
96#define GetShortDate(fmt) fmt->lppszStrings[2]
97#define GetTime(fmt) fmt->lppszStrings[3]
98#define GetAM(fmt) fmt->lppszStrings[54]
99#define GetPM(fmt) fmt->lppszStrings[55]
100#define GetYearMonth(fmt) fmt->lppszStrings[56]
102#define GetLongDay(fmt,day) fmt->lppszStrings[4 + day]
103#define GetShortDay(fmt,day) fmt->lppszStrings[11 + day]
104#define GetLongMonth(fmt,mth) fmt->lppszStrings[18 + mth]
105#define GetGenitiveMonth(fmt,mth) fmt->lppszStrings[30 + mth]
106#define GetShortMonth(fmt,mth) fmt->lppszStrings[42 + mth]
118 0, 0, { (
DWORD_PTR)(__FILE__
": NLS_Formats") }
136 if (szBuff[0] && szBuff[1] ==
';' && szBuff[2] !=
'0')
137 dwVal = (szBuff[0] -
'0') * 10 + (szBuff[2] -
'0');
140 const WCHAR* iter = szBuff;
142 while(*iter >=
'0' && *iter <=
'9')
143 dwVal = dwVal * 10 + (*iter++ -
'0');
167#define GET_LOCALE_NUMBER(num, type) num = NLS_GetLocaleNumber(lcid, type|dwFlags); \
168 TRACE( #type ": %d (%08x)\n", (DWORD)num, (DWORD)num)
170#define GET_LOCALE_STRING(str, type) str = NLS_GetLocaleString(lcid, type|dwFlags); \
171 TRACE( #type ": %s\n", debugstr_w(str))
181 static const LCTYPE NLS_LocaleIndices[] = {
229 TRACE(
"Creating new cache entry\n");
248 WARN(
"LOCALE_SGROUPING (%d) unhandled, please report!\n",
264 WARN(
"LOCALE_SMONGROUPING (%d) unhandled, please report!\n",
272 WARN(
"LOCALE_INEGCURR (%d) unhandled, please report!\n",
279 WARN(
"LOCALE_IPOSCURR (%d) unhandled,please report!\n",
293 for (
i = 0;
i < 12;
i++)
309 node = NLS_CachedFormats;
315 node = NLS_CachedFormats = new_node;
377#define IsLiteralMarker(p) (p == '\'')
378#define IsDateFmtChar(p) (p == 'd'||p == 'M'||p == 'y'||p == 'g')
379#define IsTimeFmtChar(p) (p == 'H'||p == 'h'||p == 'm'||p == 's'||p == 't')
383#define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY | DATE_USE_ALT_CALENDAR)
385#define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY)
387#define TIME_FORMAT_FLAGS (TIME_TIMEVARSONLY|TIME_FORCE24HOURFORMAT| \
388 TIME_NOMINUTESORSECONDS|TIME_NOSECONDS| \
407 INT lastFormatPos = 0;
413 goto invalid_parameter;
426 if ((
dwFlags & (DATE_LTRREADING|DATE_RTLREADING)) == (DATE_LTRREADING|DATE_RTLREADING))
428 else if (
dwFlags & (DATE_LTRREADING|DATE_RTLREADING))
429 FIXME(
"Unsupported flags: DATE_LTRREADING/DATE_RTLREADING\n");
475 memset(&st, 0,
sizeof(st));
481 goto invalid_parameter;
491 goto invalid_parameter;
515 else if (cchWritten >= cchOut)
531 int count = 0, dwLen;
543 if (fmtChar !=
'M') d_dd_formatted =
FALSE;
553 dwVal = lpTime->
wDay;
555 d_dd_formatted =
TRUE;
590 if (*
format !=
' ')
break;
597 while (*++
format ==
'd') dcount++;
647 dwVal = lpTime->
wYear;
652 dwVal = lpTime->
wYear % 100;
659 if (IS_LCID_JAPANESE(
lcid))
689 FIXME(
"Should be using GetCalendarInfo(CAL_SERASTRING), defaulting to 'AD'\n");
703 dwVal = lpTime->
wHour == 0 ? 12 : (lpTime->
wHour - 1) % 12 + 1;
711 dwVal = lpTime->
wHour;
718 cchWritten = lastFormatPos;
732 cchWritten = lastFormatPos;
746 cchWritten = lastFormatPos;
752 szAdd = lpTime->
wHour < 12 ?
node->szShortAM :
node->szShortPM;
759 if (szAdd ==
buff &&
buff[0] ==
'\0')
761 static const WCHAR fmtW[] = {
'%',
'.',
'*',
'd',0};
766 dwLen = szAdd ?
strlenW(szAdd) : 0;
770 if (cchWritten + dwLen < cchOut)
771 memcpy(lpStr + cchWritten, szAdd, dwLen *
sizeof(
WCHAR));
774 memcpy(lpStr + cchWritten, szAdd, (cchOut - cchWritten) *
sizeof(
WCHAR));
779 lastFormatPos = cchWritten;
786 else if (cchWritten >= cchOut)
788 else if (!bSkipping || *
lpFormat ==
' ')
800 if (cchWritten >= cchOut)
803 lpStr[cchWritten] =
'\0';
807 TRACE(
"returning length=%d, output=%s\n", cchWritten,
debugstr_w(lpStr));
811 TRACE(
"returning 0, (ERROR_INSUFFICIENT_BUFFER)\n");
834 WCHAR szFormat[128], szOut[128];
867 lpStr ? szOut :
NULL, cchOut);
873 else if (cchOut && iRet)
932#if _WIN32_WINNT >= 0x600
962 if (calendar !=
NULL)
1040#if _WIN32_WINNT >= 0x600
1118 LPSTR lpNumberStr,
int cchOut)
1121 WCHAR szDec[8], szGrp[8], szIn[128], szOut[128];
1154 fmt.lpDecimalSep = szDec;
1159 fmt.lpThousandSep = szGrp;
1172 lpNumberStr ? szOut :
NULL, cchOut);
1174 if (szOut[0] && lpNumberStr)
1180#define NF_ISNEGATIVE 0x1
1181#define NF_ISREAL 0x2
1182#define NF_DIGITS 0x4
1183#define NF_DIGITS_OUT 0x8
1184#define NF_ROUND 0x10
1187#define NLS_NEG_PARENS 0
1188#define NLS_NEG_LEFT 1
1189#define NLS_NEG_LEFT_SPACE 2
1190#define NLS_NEG_RIGHT 3
1191#define NLS_NEG_RIGHT_SPACE 4
1200 LPWSTR lpNumberStr,
int cchOut)
1204 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc;
1205 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0;
1211 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpNumberStr) ||
1231 lpszNegStart = lpszNeg = szNegBuff;
1233 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1245 if (*szSrc >=
'0' && *szSrc <=
'9')
1251 else if (*szSrc ==
'-')
1257 else if (*szSrc ==
'.')
1282 while (lpszNeg >= lpszNegStart)
1283 *szOut-- = *lpszNeg--;
1295 while (*szSrc !=
'.')
1297 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1300 dwState &= ~NF_ROUND;
1310 if (dwDecimals <= lpFormat->NumDigits)
1312 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1313 while (dwDecimals--)
1320 while (dwDecimals--)
1322 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1325 dwState &= ~NF_ROUND;
1332 while (*szSrc !=
'.')
1340 dwState &= ~NF_ROUND;
1341 *szOut-- = (*szSrc)+1;
1346 *szOut-- = *szSrc--;
1351 while (lpszDec >=
lpFormat->lpDecimalSep)
1352 *szOut-- = *lpszDec--;
1358 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1366 dwState &= ~NF_ROUND;
1367 *szOut-- = (*szSrc)+1;
1372 *szOut-- = *szSrc--;
1375 dwCurrentGroupCount++;
1376 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1380 while (lpszGrp >=
lpFormat->lpThousandSep)
1381 *szOut-- = *lpszGrp--;
1383 dwCurrentGroupCount = 0;
1407 while (lpszNeg >= lpszNegStart)
1408 *szOut-- = *lpszNeg--;
1421 memcpy(lpNumberStr, szOut, cchOut *
sizeof(
WCHAR));
1422 lpNumberStr[cchOut - 1] =
'\0';
1434#if _WIN32_WINNT >= 0x600
1484 LPSTR lpCurrencyStr,
int cchOut)
1487 WCHAR szDec[8], szGrp[8], szCy[8], szIn[128], szOut[128];
1520 fmt.lpDecimalSep = szDec;
1525 fmt.lpThousandSep = szGrp;
1530 fmt.lpCurrencySymbol = szCy;
1543 lpCurrencyStr ? szOut :
NULL, cchOut);
1545 if (szOut[0] && lpCurrencyStr)
1551#define CF_PARENS 0x1
1552#define CF_MINUS_LEFT 0x2
1553#define CF_MINUS_RIGHT 0x4
1554#define CF_MINUS_BEFORE 0x8
1555#define CF_CY_LEFT 0x10
1556#define CF_CY_RIGHT 0x20
1557#define CF_CY_SPACE 0x40
1566 LPWSTR lpCurrencyStr,
int cchOut)
1568 static const BYTE NLS_NegCyFormats[16] =
1587 static const BYTE NLS_PosCyFormats[4] =
1596 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc, *lpszCy, *lpszCyStart;
1597 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0, dwFmt;
1603 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpCurrencyStr) ||
1626 lpszNegStart = lpszNeg = szNegBuff;
1630 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1631 lpszCyStart =
lpFormat->lpCurrencySymbol;
1632 lpszCy = lpszCyStart +
strlenW(lpszCyStart) - 1;
1642 if (*szSrc >=
'0' && *szSrc <=
'9')
1648 else if (*szSrc ==
'-')
1654 else if (*szSrc ==
'.')
1670 dwFmt = NLS_NegCyFormats[
lpFormat->NegativeOrder];
1672 dwFmt = NLS_PosCyFormats[
lpFormat->PositiveOrder];
1684 while (lpszNeg >= lpszNegStart)
1685 *szOut-- = *lpszNeg--;
1686 dwFmt &= ~CF_MINUS_RIGHT;
1692 while (lpszCy >= lpszCyStart)
1693 *szOut-- = *lpszCy--;
1706 while (*szSrc !=
'.')
1708 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1711 dwState &= ~NF_ROUND;
1721 if (dwDecimals <= lpFormat->NumDigits)
1723 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1724 while (dwDecimals--)
1731 while (dwDecimals--)
1733 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1736 dwState &= ~NF_ROUND;
1743 while (*szSrc !=
'.')
1751 dwState &= ~NF_ROUND;
1752 *szOut-- = (*szSrc)+1;
1757 *szOut-- = *szSrc--;
1761 while (lpszDec >=
lpFormat->lpDecimalSep)
1762 *szOut-- = *lpszDec--;
1768 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1776 dwState &= ~NF_ROUND;
1777 *szOut-- = (*szSrc)+1;
1782 *szOut-- = *szSrc--;
1785 dwCurrentGroupCount++;
1786 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1790 while (lpszGrp >=
lpFormat->lpThousandSep)
1791 *szOut-- = *lpszGrp--;
1793 dwCurrentGroupCount = 0;
1810 while (lpszNeg >= lpszNegStart)
1811 *szOut-- = *lpszNeg--;
1812 dwFmt &= ~CF_MINUS_LEFT;
1820 while (lpszCy >= lpszCyStart)
1821 *szOut-- = *lpszCy--;
1834 memcpy(lpCurrencyStr, szOut, iRet *
sizeof(
WCHAR));
1837 memcpy(lpCurrencyStr, szOut, cchOut *
sizeof(
WCHAR));
1838 lpCurrencyStr[cchOut - 1] =
'\0';
1850#if _WIN32_WINNT >= 0x600
1926 case DATE_YEARMONTH:
1927 lctype = LOCALE_SYEARMONTH;
1930 FIXME(
"Unknown date format (0x%08x)\n", ctxt->
flags);
2032#if _WIN32_WINNT >= 0x600
2041 ctxt.u.callbackexex =
proc;
2042 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2045 ctxt.unicode =
TRUE;
2085 FIXME(
"Unknown time format (%d)\n", ctxt->
flags);
2156#if _WIN32_WINNT >= 0x600
2165 ctxt.u.callbackex =
proc;
2166 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2169 ctxt.unicode =
TRUE;
2250 if (ctxt->
caltype & CAL_RETURN_NUMBER)
2266 ERR(
"Buffer resizing disorder: was %d, requested %d.\n", bufSz, newSz);
2270 WARN(
"Buffer too small; resizing to %d bytes.\n", bufSz);
2303 if ((iter ==
NULL) || (*iter == 0))
2307 while ((*iter >=
'0') && (*iter <=
'9'))
2308 calendar = calendar * 10 + *iter++ -
'0';
2404#if _WIN32_WINNT >= 0x600
2413 TRACE(
"(%p,%s,0x%08x,%p,0x%08x,0x%ld)\n", calinfoproc,
debugstr_w(
locale),
calendar,
reserved,
caltype,
lParam);
2416 ctxt.u.callbackexex = calinfoproc;
2417 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2421 ctxt.unicode =
TRUE;
2433 int ret, cchDataW = cchData;
2437 if (!(CalType & CAL_USE_CP_ACP))
2462 if (!cchData && !(CalType & CAL_RETURN_NUMBER))
2468 if(
ret && lpCalDataW && lpCalData)
2474 else if (CalType & CAL_RETURN_NUMBER)
2488 static const LCTYPE caltype_lctype_map[] = {
2538#if (WINVER >= 0x0600)
2539 LOCALE_SSHORTESTDAYNAME1,
2540 LOCALE_SSHORTESTDAYNAME2,
2541 LOCALE_SSHORTESTDAYNAME3,
2542 LOCALE_SSHORTESTDAYNAME4,
2543 LOCALE_SSHORTESTDAYNAME5,
2544 LOCALE_SSHORTESTDAYNAME6,
2545 LOCALE_SSHORTESTDAYNAME7,
2550 DWORD localeflags = 0;
2553 if (CalType & CAL_NOUSEROVERRIDE)
2554 FIXME(
"flag CAL_NOUSEROVERRIDE used, not fully implemented\n");
2555 if (CalType & CAL_USE_CP_ACP)
2556 FIXME(
"flag CAL_USE_CP_ACP used, not fully implemented\n");
2558 if (CalType & CAL_RETURN_NUMBER) {
2564 if (lpCalData !=
NULL)
2565 WARN(
"lpCalData not NULL (%p) when it should!\n", lpCalData);
2567 WARN(
"cchData not 0 (%d) when it should!\n", cchData);
2569 if (lpValue !=
NULL)
2570 WARN(
"lpValue not NULL (%p) when it should!\n", lpValue);
2576 calinfo = CalType & 0xffff;
2581 if (CalType & CAL_RETURN_GENITIVE_NAMES)
2588 if (IS_LCID_JAPANESE(Locale))
2590 if (CalType & CAL_RETURN_NUMBER)
2597 static const WCHAR fmtW[] = {
'%',
'u',0};
2600 if (!lpCalData)
return ret;
2611 if (CalType & CAL_RETURN_NUMBER)
2617 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2620 lpCalData[0] = 0x548C;
2621 lpCalData[1] = 0x66A6;
2626 FIXME(
"Unimplemented caltype %d\n", calinfo);
2627 if (lpCalData) *lpCalData = 0;
2631 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2636 if (CalType & CAL_RETURN_NUMBER)
2638 *lpValue = pEra->
wYear;
2643 static const WCHAR fmtW[] = {
'%',
'u',0};
2646 if (!lpCalData)
return ret;
2663 FIXME(
"Unimplemented caltype %d\n", calinfo);
2667 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2673 return strlenW(lpCalData) + 1;
2682 FIXME(
"Unimplemented caltype %d\n", calinfo);
2726 case CAL_SYEARMONTH:
2727 return GetLocaleInfoW(Locale, caltype_lctype_map[calinfo] | localeflags, lpCalData, cchData);
2728 case CAL_ITWODIGITYEARMAX:
2730 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2732 if (CalType & CAL_RETURN_NUMBER)
2739 static const WCHAR fmtW[] = {
'%',
'u',0};
2742 if (!lpCalData)
return ret;
2753 if (CalType & CAL_RETURN_NUMBER)
2755 *lpValue = CALINFO_MAX_YEAR;
2760 static const WCHAR fmtW[] = {
'%',
'u',0};
2763 if (!lpCalData)
return ret;
2775 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2781 return strlenW(lpCalData) + 1;
2788 FIXME(
"Unknown caltype %d\n", calinfo);
2795#if _WIN32_WINNT >= 0x600
2806 FIXME(
"(%s, %d, %p, 0x%08x, %p, %d, %p): semi-stub\n",
debugstr_w(
locale),
calendar, lpReserved,
caltype,
2818 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2819 Locale, Calendar, CalType,
debugstr_a(lpCalData));
2830 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2831 Locale, Calendar, CalType,
debugstr_w(lpCalData));
#define CAL_SABBREVERASTRING
#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)
static unsigned char buff[32768]
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
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
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)
#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)
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)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ERROR_INVALID_FLAGS
#define LOCALE_USE_CP_ACP
#define LOCALE_SABBREVMONTHNAME10
#define LOCALE_SMONTHNAME12
#define LOCALE_SMONTHNAME5
#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_SABBREVMONTHNAME11
BOOL(CALLBACK * DATEFMT_ENUMPROCW)(LPWSTR)
#define CAL_SABBREVMONTHNAME1
#define LOCALE_SMONTHNAME7
BOOL(CALLBACK * DATEFMT_ENUMPROCEXEX)(LPWSTR, CALID, LPARAM)
#define CAL_SABBREVMONTHNAME3
int WINAPI GetDateFormatEx(LPCWSTR, DWORD, const SYSTEMTIME *, LPCWSTR, LPWSTR, int, LPCWSTR)
#define LOCALE_SSHORTDATE
BOOL(CALLBACK * CALINFO_ENUMPROCA)(LPSTR)
#define TIME_NOTIMEMARKER
BOOL(CALLBACK * TIMEFMT_ENUMPROCA)(LPSTR)
#define TIME_NOMINUTESORSECONDS
#define LOCALE_SABBREVMONTHNAME4
#define CAL_SABBREVMONTHNAME5
#define LOCALE_SABBREVDAYNAME4
#define LOCALE_SMONDECIMALSEP
BOOL(CALLBACK * CALINFO_ENUMPROCEXA)(LPSTR, CALID)
#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
int WINAPI GetTimeFormatEx(LPCWSTR, DWORD, const SYSTEMTIME *, LPCWSTR, LPWSTR, int)
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
BOOL(CALLBACK * DATEFMT_ENUMPROCA)(LPSTR)
#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