6#ifndef _STRSAFE_H_INCLUDED_
7#define _STRSAFE_H_INCLUDED_
16#pragma clang diagnostic push
17#pragma clang diagnostic ignored "-Wignored-attributes"
20#ifndef _SIZE_T_DEFINED
21#define _SIZE_T_DEFINED
30#ifndef _SSIZE_T_DEFINED
31#define _SSIZE_T_DEFINED
40#ifndef _WCHAR_T_DEFINED
41#define _WCHAR_T_DEFINED
45#ifndef _HRESULT_DEFINED
46#define _HRESULT_DEFINED
51#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
55#define FAILED(hr) ((HRESULT)(hr) < 0)
59#define S_OK ((HRESULT)0x00000000L)
64# define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
66# define C_ASSERT(e) extern void __C_ASSERT__(int [(e)?1:-1])
71#define _STRSAFE_EXTERN_C extern "C"
73#define _STRSAFE_EXTERN_C extern
77#define WINAPI __stdcall
80#define STRSAFEAPI static __inline HRESULT WINAPI
81#define STRSAFE_INLINE_API __CRT_INLINE HRESULT WINAPI
83#define STRSAFE_MAX_CCH 2147483647
85#ifndef _NTSTRSAFE_H_INCLUDED_
86#define STRSAFE_IGNORE_NULLS 0x00000100
87#define STRSAFE_FILL_BEHIND_NULL 0x00000200
88#define STRSAFE_FILL_ON_FAILURE 0x00000400
89#define STRSAFE_NULL_ON_FAILURE 0x00000800
90#define STRSAFE_NO_TRUNCATION 0x00001000
91#define STRSAFE_IGNORE_NULL_UNICODE_STRINGS 0x00010000
92#define STRSAFE_UNICODE_STRING_DEST_NULL_TERMINATED 0x00020000
94#define STRSAFE_VALID_FLAGS (0x000000FF | STRSAFE_IGNORE_NULLS | STRSAFE_FILL_BEHIND_NULL | STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)
95#define STRSAFE_UNICODE_STRING_VALID_FLAGS (STRSAFE_VALID_FLAGS | STRSAFE_IGNORE_NULL_UNICODE_STRINGS | STRSAFE_UNICODE_STRING_DEST_NULL_TERMINATED)
97#define STRSAFE_FILL_BYTE(x) ((STRSAFE_DWORD)(((x) & 0x000000FF) | STRSAFE_FILL_BEHIND_NULL))
98#define STRSAFE_FAILURE_BYTE(x) ((STRSAFE_DWORD)(((x) & 0x000000FF) | STRSAFE_FILL_ON_FAILURE))
100#define STRSAFE_GET_FILL_PATTERN(dwFlags) ((int)((dwFlags) & 0x000000FF))
103#define STRSAFE_E_INSUFFICIENT_BUFFER ((HRESULT)0x8007007AL)
104#define STRSAFE_E_INVALID_PARAMETER ((HRESULT)0x80070057L)
105#define STRSAFE_E_END_OF_FILE ((HRESULT)0x80070026L)
139#define StringCchCopy __MINGW_NAME_AW(StringCchCopy)
144#ifndef __CRT__NO_INLINE
155#define StringCbCopy __MINGW_NAME_AW(StringCbCopy)
160#ifndef __CRT__NO_INLINE
167 size_t cchDest = cbDest /
sizeof(
wchar_t);
173#define StringCchCopyEx __MINGW_NAME_AW(StringCchCopyEx)
178#ifndef __CRT__NO_INLINE
187 cbDest = cchDest *
sizeof(
wchar_t);
192#define StringCbCopyEx __MINGW_NAME_AW(StringCbCopyEx)
197#ifndef __CRT__NO_INLINE
200 size_t cchRemaining = 0;
205 *pcbRemaining = (cchRemaining*
sizeof(
char)) + (cbDest %
sizeof(
char));
212 size_t cchDest = cbDest /
sizeof(
wchar_t);
213 size_t cchRemaining = 0;
219 *pcbRemaining = (cchRemaining*
sizeof(
wchar_t)) + (cbDest %
sizeof(
wchar_t));
227#define StringCchCopyN __MINGW_NAME_AW(StringCchCopyN)
229#ifndef __CRT__NO_INLINE
246#define StringCbCopyN __MINGW_NAME_AW(StringCbCopyN)
248#ifndef __CRT__NO_INLINE
256 size_t cchDest = cbDest /
sizeof(
wchar_t);
257 size_t cchToCopy = cbToCopy /
sizeof(
wchar_t);
267#define StringCchCopyNEx __MINGW_NAME_AW(StringCchCopyNEx)
269#ifndef __CRT__NO_INLINE
284#define StringCbCopyNEx __MINGW_NAME_AW(StringCbCopyNEx)
286#ifndef __CRT__NO_INLINE
289 size_t cchRemaining = 0;
295 *pcbRemaining = cchRemaining;
303 size_t cchRemaining = 0;
304 cchDest = cbDest /
sizeof(
wchar_t);
305 cchToCopy = cbToCopy /
sizeof(
wchar_t);
309 *pcbRemaining = (cchRemaining*
sizeof(
wchar_t)) + (cbDest %
sizeof(
wchar_t));
317#define StringCchCat __MINGW_NAME_AW(StringCchCat)
319#ifndef __CRT__NO_INLINE
334#define StringCbCat __MINGW_NAME_AW(StringCbCat)
336#ifndef __CRT__NO_INLINE
343 size_t cchDest = cbDest /
sizeof(
wchar_t);
352#define StringCchCatEx __MINGW_NAME_AW(StringCchCatEx)
354#ifndef __CRT__NO_INLINE
361 size_t cbDest = cchDest*
sizeof(
wchar_t);
370#define StringCbCatEx __MINGW_NAME_AW(StringCbCatEx)
372#ifndef __CRT__NO_INLINE
375 size_t cchRemaining = 0;
379 *pcbRemaining = (cchRemaining*
sizeof(
char)) + (cbDest %
sizeof(
char));
385 size_t cchDest = cbDest /
sizeof(
wchar_t);
386 size_t cchRemaining = 0;
391 *pcbRemaining = (cchRemaining*
sizeof(
wchar_t)) + (cbDest %
sizeof(
wchar_t));
399#define StringCchCatN __MINGW_NAME_AW(StringCchCatN)
401#ifndef __CRT__NO_INLINE
416#define StringCbCatN __MINGW_NAME_AW(StringCbCatN)
418#ifndef __CRT__NO_INLINE
425 size_t cchDest = cbDest /
sizeof(
wchar_t);
426 size_t cchToAppend = cbToAppend /
sizeof(
wchar_t);
436#define StringCchCatNEx __MINGW_NAME_AW(StringCchCatNEx)
438#ifndef __CRT__NO_INLINE
453#define StringCbCatNEx __MINGW_NAME_AW(StringCbCatNEx)
455#ifndef __CRT__NO_INLINE
458 size_t cchRemaining = 0;
462 *pcbRemaining = (cchRemaining*
sizeof(
char)) + (cbDest %
sizeof(
char));
468 size_t cchDest = cbDest /
sizeof(
wchar_t);
469 size_t cchToAppend = cbToAppend /
sizeof(
wchar_t);
470 size_t cchRemaining = 0;
474 *pcbRemaining = (cchRemaining*
sizeof(
wchar_t)) + (cbDest %
sizeof(
wchar_t));
482#define StringCchVPrintf __MINGW_NAME_AW(StringCchVPrintf)
484#ifndef __CRT__NO_INLINE
499#define StringCbVPrintf __MINGW_NAME_AW(StringCbVPrintf)
501#ifndef __CRT__NO_INLINE
508 size_t cchDest = cbDest /
sizeof(
wchar_t);
517#define StringCchPrintf __MINGW_NAME_AW(StringCchPrintf)
519#ifndef __CRT__NO_INLINE
544#define StringCbPrintf __MINGW_NAME_AW(StringCbPrintf)
546#ifndef __CRT__NO_INLINE
560 size_t cchDest = cbDest /
sizeof(
wchar_t);
572#define StringCchPrintfEx __MINGW_NAME_AW(StringCchPrintfEx)
574#ifndef __CRT__NO_INLINE
587 size_t cbDest = cchDest *
sizeof(
wchar_t);
600#define StringCbPrintfEx __MINGW_NAME_AW(StringCbPrintfEx)
602#ifndef __CRT__NO_INLINE
606 size_t cchRemaining = 0;
607 cchDest = cbDest /
sizeof(
char);
617 *pcbRemaining = (cchRemaining*
sizeof(
char)) + (cbDest %
sizeof(
char));
626 size_t cchRemaining = 0;
627 cchDest = cbDest /
sizeof(
wchar_t);
637 *pcbRemaining = (cchRemaining*
sizeof(
wchar_t)) + (cbDest %
sizeof(
wchar_t));
647#define StringCchVPrintfEx __MINGW_NAME_AW(StringCchVPrintfEx)
649#ifndef __CRT__NO_INLINE
655 cbDest = cchDest*
sizeof(
char);
666 cbDest = cchDest*
sizeof(
wchar_t);
676#define StringCbVPrintfEx __MINGW_NAME_AW(StringCbVPrintfEx)
678#ifndef __CRT__NO_INLINE
682 size_t cchRemaining = 0;
683 cchDest = cbDest /
sizeof(
char);
688 *pcbRemaining = (cchRemaining*
sizeof(
char)) + (cbDest %
sizeof(
char));
697 size_t cchRemaining = 0;
698 cchDest = cbDest /
sizeof(
wchar_t);
703 *pcbRemaining = (cchRemaining*
sizeof(
wchar_t)) + (cbDest %
sizeof(
wchar_t));
713#define StringCchGets __MINGW_NAME_AW(StringCchGets)
715#ifndef __CRT__NO_INLINE
721 cbDest = cchDest*
sizeof(
char);
732 cbDest = cchDest*
sizeof(
wchar_t);
742#define StringCbGets __MINGW_NAME_AW(StringCbGets)
744#ifndef __CRT__NO_INLINE
748 cchDest = cbDest /
sizeof(
char);
757 cchDest = cbDest /
sizeof(
wchar_t);
767#define StringCchGetsEx __MINGW_NAME_AW(StringCchGetsEx)
769#ifndef __CRT__NO_INLINE
775 cbDest = cchDest*
sizeof(
char);
786 cbDest = cchDest*
sizeof(
wchar_t);
796#define StringCbGetsEx __MINGW_NAME_AW(StringCbGetsEx)
798#ifndef __CRT__NO_INLINE
802 size_t cchRemaining = 0;
803 cchDest = cbDest /
sizeof(
char);
807 if(pcbRemaining) *pcbRemaining = (cchRemaining*
sizeof(
char)) + (cbDest %
sizeof(
char));
815 size_t cchRemaining = 0;
816 cchDest = cbDest /
sizeof(
wchar_t);
820 if(pcbRemaining) *pcbRemaining = (cchRemaining*
sizeof(
wchar_t)) + (cbDest %
sizeof(
wchar_t));
829#define StringCchLength __MINGW_NAME_AW(StringCchLength)
831#ifndef __CRT__NO_INLINE
856#define StringCbLength __MINGW_NAME_AW(StringCbLength)
858#ifndef __CRT__NO_INLINE
862 size_t cchLength = 0;
868 *pcbLength = cchLength*
sizeof(
char);
879 size_t cchLength = 0;
885 *pcbLength = cchLength*
sizeof(
wchar_t);
897 while(cchDest && (*pszSrc!=
'\0')) {
898 *pszDest++ = *pszSrc++;
914 while(cchDest && (*pszSrc!=
L'\0')) {
915 *pszDest++ = *pszSrc++;
930 size_t cchRemaining = 0;
937 if(!pszSrc) pszSrc =
"";
941 pszDestEnd = pszDest;
948 pszDestEnd = pszDest;
949 cchRemaining = cchDest;
950 while(cchRemaining && (*pszSrc!=
'\0')) {
951 *pszDestEnd++ = *pszSrc++;
954 if(cchRemaining > 0) {
972 pszDestEnd = pszDest;
973 cchRemaining = cchDest;
974 }
else if(cchDest > 0) {
975 pszDestEnd = pszDest + cchDest - 1;
982 pszDestEnd = pszDest;
983 cchRemaining = cchDest;
990 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
991 if(pcchRemaining) *pcchRemaining = cchRemaining;
999 size_t cchRemaining = 0;
1006 if(!pszSrc) pszSrc =
L"";
1010 pszDestEnd = pszDest;
1012 if(*pszSrc!=
L'\0') {
1017 pszDestEnd = pszDest;
1018 cchRemaining = cchDest;
1019 while(cchRemaining && (*pszSrc!=
L'\0')) {
1020 *pszDestEnd++ = *pszSrc++;
1023 if(cchRemaining > 0) {
1032 *pszDestEnd =
L'\0';
1041 pszDestEnd = pszDest;
1042 cchRemaining = cchDest;
1043 }
else if(cchDest > 0) {
1044 pszDestEnd = pszDest + cchDest - 1;
1046 *pszDestEnd =
L'\0';
1051 pszDestEnd = pszDest;
1052 cchRemaining = cchDest;
1053 *pszDestEnd =
L'\0';
1059 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1060 if(pcchRemaining) *pcchRemaining = cchRemaining;
1069 while(cchDest && cchSrc && (*pszSrc!=
'\0')) {
1070 *pszDest++ = *pszSrc++;
1087 while(cchDest && cchToCopy && (*pszSrc!=
L'\0')) {
1088 *pszDest++ = *pszSrc++;
1104 size_t cchRemaining = 0;
1112 if(!pszSrc) pszSrc =
"";
1116 pszDestEnd = pszDest;
1118 if((cchToCopy!=0) && (*pszSrc!=
'\0')) {
1123 pszDestEnd = pszDest;
1124 cchRemaining = cchDest;
1125 while(cchRemaining && cchToCopy && (*pszSrc!=
'\0')) {
1126 *pszDestEnd++ = *pszSrc++;
1130 if(cchRemaining > 0) {
1148 pszDestEnd = pszDest;
1149 cchRemaining = cchDest;
1150 }
else if(cchDest > 0) {
1151 pszDestEnd = pszDest + cchDest - 1;
1158 pszDestEnd = pszDest;
1159 cchRemaining = cchDest;
1166 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1167 if(pcchRemaining) *pcchRemaining = cchRemaining;
1175 size_t cchRemaining = 0;
1183 if(!pszSrc) pszSrc =
L"";
1187 pszDestEnd = pszDest;
1189 if((cchToCopy!=0) && (*pszSrc!=
L'\0')) {
1194 pszDestEnd = pszDest;
1195 cchRemaining = cchDest;
1196 while(cchRemaining && cchToCopy && (*pszSrc!=
L'\0')) {
1197 *pszDestEnd++ = *pszSrc++;
1201 if(cchRemaining > 0) {
1210 *pszDestEnd =
L'\0';
1219 pszDestEnd = pszDest;
1220 cchRemaining = cchDest;
1221 }
else if(cchDest > 0) {
1222 pszDestEnd = pszDest + cchDest - 1;
1224 *pszDestEnd =
L'\0';
1229 pszDestEnd = pszDest;
1230 cchRemaining = cchDest;
1231 *pszDestEnd =
L'\0';
1237 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1238 if(pcchRemaining) *pcchRemaining = cchRemaining;
1245 size_t cchDestLength;
1253 size_t cchDestLength;
1262 size_t cchRemaining = 0;
1265 size_t cchDestLength;
1268 if((cchDest==0) && (cbDest==0)) cchDestLength = 0;
1273 pszDestEnd = pszDest + cchDestLength;
1274 cchRemaining = cchDest - cchDestLength;
1277 if(!pszSrc) pszSrc =
"";
1281 pszDestEnd = pszDest + cchDestLength;
1282 cchRemaining = cchDest - cchDestLength;
1299 pszDestEnd = pszDest;
1300 cchRemaining = cchDest;
1301 }
else if(cchDest > 0) {
1302 pszDestEnd = pszDest + cchDest - 1;
1309 pszDestEnd = pszDest;
1310 cchRemaining = cchDest;
1317 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1318 if(pcchRemaining) *pcchRemaining = cchRemaining;
1326 size_t cchRemaining = 0;
1329 size_t cchDestLength;
1332 if((cchDest==0) && (cbDest==0)) cchDestLength = 0;
1337 pszDestEnd = pszDest + cchDestLength;
1338 cchRemaining = cchDest - cchDestLength;
1341 if(!pszSrc) pszSrc =
L"";
1345 pszDestEnd = pszDest + cchDestLength;
1346 cchRemaining = cchDest - cchDestLength;
1351 if(*pszSrc!=
L'\0') {
1363 pszDestEnd = pszDest;
1364 cchRemaining = cchDest;
1365 }
else if(cchDest > 0) {
1366 pszDestEnd = pszDest + cchDest - 1;
1368 *pszDestEnd =
L'\0';
1373 pszDestEnd = pszDest;
1374 cchRemaining = cchDest;
1375 *pszDestEnd =
L'\0';
1381 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1382 if(pcchRemaining) *pcchRemaining = cchRemaining;
1389 size_t cchDestLength;
1397 size_t cchDestLength;
1406 size_t cchRemaining = 0;
1407 size_t cchDestLength = 0;
1413 if((cchDest==0) && (cbDest==0)) cchDestLength = 0;
1418 pszDestEnd = pszDest + cchDestLength;
1419 cchRemaining = cchDest - cchDestLength;
1422 if(!pszSrc) pszSrc =
"";
1426 pszDestEnd = pszDest + cchDestLength;
1427 cchRemaining = cchDest - cchDestLength;
1432 if((cchToAppend!=0) && (*pszSrc!=
'\0')) {
1444 pszDestEnd = pszDest;
1445 cchRemaining = cchDest;
1446 }
else if(cchDest > 0) {
1447 pszDestEnd = pszDest + cchDest - 1;
1454 pszDestEnd = pszDest;
1455 cchRemaining = cchDest;
1462 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1463 if(pcchRemaining) *pcchRemaining = cchRemaining;
1471 size_t cchRemaining = 0;
1472 size_t cchDestLength = 0;
1478 if((cchDest==0) && (cbDest==0)) cchDestLength = 0;
1483 pszDestEnd = pszDest + cchDestLength;
1484 cchRemaining = cchDest - cchDestLength;
1487 if(!pszSrc) pszSrc =
L"";
1491 pszDestEnd = pszDest + cchDestLength;
1492 cchRemaining = cchDest - cchDestLength;
1497 if((cchToAppend!=0) && (*pszSrc!=
L'\0')) {
1509 pszDestEnd = pszDest;
1510 cchRemaining = cchDest;
1511 }
else if(cchDest > 0) {
1512 pszDestEnd = pszDest + cchDest - 1;
1514 *pszDestEnd =
L'\0';
1519 pszDestEnd = pszDest;
1520 cchRemaining = cchDest;
1521 *pszDestEnd =
L'\0';
1527 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1528 if(pcchRemaining) *pcchRemaining = cchRemaining;
1541 if((iRet < 0) || (((
size_t)iRet) >
cchMax)) {
1545 }
else if(((
size_t)iRet)==
cchMax) {
1561 if((iRet < 0) || (((
size_t)iRet) >
cchMax)) {
1565 }
else if(((
size_t)iRet)==
cchMax) {
1576 size_t cchRemaining = 0;
1583 if(!pszFormat) pszFormat =
"";
1587 pszDestEnd = pszDest;
1589 if(*pszFormat!=
'\0') {
1598 if((iRet < 0) || (((
size_t)iRet) >
cchMax)) {
1599 pszDestEnd = pszDest +
cchMax;
1603 }
else if(((
size_t)iRet)==
cchMax) {
1604 pszDestEnd = pszDest +
cchMax;
1607 }
else if(((
size_t)iRet) <
cchMax) {
1608 pszDestEnd = pszDest + iRet;
1609 cchRemaining = cchDest - iRet;
1622 pszDestEnd = pszDest;
1623 cchRemaining = cchDest;
1624 }
else if(cchDest > 0) {
1625 pszDestEnd = pszDest + cchDest - 1;
1632 pszDestEnd = pszDest;
1633 cchRemaining = cchDest;
1640 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1641 if(pcchRemaining) *pcchRemaining = cchRemaining;
1649 size_t cchRemaining = 0;
1656 if(!pszFormat) pszFormat =
L"";
1660 pszDestEnd = pszDest;
1662 if(*pszFormat!=
L'\0') {
1671 if((iRet < 0) || (((
size_t)iRet) >
cchMax)) {
1672 pszDestEnd = pszDest +
cchMax;
1674 *pszDestEnd =
L'\0';
1676 }
else if(((
size_t)iRet)==
cchMax) {
1677 pszDestEnd = pszDest +
cchMax;
1679 *pszDestEnd =
L'\0';
1680 }
else if(((
size_t)iRet) <
cchMax) {
1681 pszDestEnd = pszDest + iRet;
1682 cchRemaining = cchDest - iRet;
1695 pszDestEnd = pszDest;
1696 cchRemaining = cchDest;
1697 }
else if(cchDest > 0) {
1698 pszDestEnd = pszDest + cchDest - 1;
1700 *pszDestEnd =
L'\0';
1705 pszDestEnd = pszDest;
1706 cchRemaining = cchDest;
1707 *pszDestEnd =
L'\0';
1713 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1714 if(pcchRemaining) *pcchRemaining = cchRemaining;
1721 size_t cchMaxPrev =
cchMax;
1722 while(
cchMax && (*psz!=
'\0')) {
1729 else *pcchLength = 0;
1736 size_t cchMaxPrev =
cchMax;
1737 while(
cchMax && (*psz!=
L'\0')) {
1744 else *pcchLength = 0;
1752 size_t cchRemaining = 0;
1763 pszDestEnd = pszDest;
1764 cchRemaining = cchDest;
1765 if(cchDest==1) *pszDestEnd =
'\0';
1768 pszDestEnd = pszDest;
1769 cchRemaining = cchDest;
1770 while(cchRemaining > 1) {
1783 if(cchRemaining > 0) {
1797 pszDestEnd = pszDest;
1798 cchRemaining = cchDest;
1799 }
else if(cchDest > 0) {
1800 pszDestEnd = pszDest + cchDest - 1;
1807 pszDestEnd = pszDest;
1808 cchRemaining = cchDest;
1815 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1816 if(pcchRemaining) *pcchRemaining = cchRemaining;
1824 size_t cchRemaining = 0;
1835 pszDestEnd = pszDest;
1836 cchRemaining = cchDest;
1837 if(cchDest==1) *pszDestEnd =
L'\0';
1840 pszDestEnd = pszDest;
1841 cchRemaining = cchDest;
1842 while(cchRemaining > 1) {
1848 if(ch==
L'\n')
break;
1853 if(cchRemaining > 0) {
1858 *pszDestEnd =
L'\0';
1867 pszDestEnd = pszDest;
1868 cchRemaining = cchDest;
1869 }
else if(cchDest > 0) {
1870 pszDestEnd = pszDest + cchDest - 1;
1872 *pszDestEnd =
L'\0';
1877 pszDestEnd = pszDest;
1878 cchRemaining = cchDest;
1879 *pszDestEnd =
L'\0';
1885 if(ppszDestEnd) *ppszDestEnd = pszDestEnd;
1886 if(pcchRemaining) *pcchRemaining = cchRemaining;
1892#define StringCopyWorkerA StringCopyWorkerA_instead_use_StringCchCopyA_or_StringCchCopyExA;
1893#define StringCopyWorkerW StringCopyWorkerW_instead_use_StringCchCopyW_or_StringCchCopyExW;
1894#define StringCopyExWorkerA StringCopyExWorkerA_instead_use_StringCchCopyA_or_StringCchCopyExA;
1895#define StringCopyExWorkerW StringCopyExWorkerW_instead_use_StringCchCopyW_or_StringCchCopyExW;
1896#define StringCatWorkerA StringCatWorkerA_instead_use_StringCchCatA_or_StringCchCatExA;
1897#define StringCatWorkerW StringCatWorkerW_instead_use_StringCchCatW_or_StringCchCatExW;
1898#define StringCatExWorkerA StringCatExWorkerA_instead_use_StringCchCatA_or_StringCchCatExA;
1899#define StringCatExWorkerW StringCatExWorkerW_instead_use_StringCchCatW_or_StringCchCatExW;
1900#define StringCatNWorkerA StringCatNWorkerA_instead_use_StringCchCatNA_or_StrincCbCatNA;
1901#define StringCatNWorkerW StringCatNWorkerW_instead_use_StringCchCatNW_or_StringCbCatNW;
1902#define StringCatNExWorkerA StringCatNExWorkerA_instead_use_StringCchCatNExA_or_StringCbCatNExA;
1903#define StringCatNExWorkerW StringCatNExWorkerW_instead_use_StringCchCatNExW_or_StringCbCatNExW;
1904#define StringVPrintfWorkerA StringVPrintfWorkerA_instead_use_StringCchVPrintfA_or_StringCchVPrintfExA;
1905#define StringVPrintfWorkerW StringVPrintfWorkerW_instead_use_StringCchVPrintfW_or_StringCchVPrintfExW;
1906#define StringVPrintfExWorkerA StringVPrintfExWorkerA_instead_use_StringCchVPrintfA_or_StringCchVPrintfExA;
1907#define StringVPrintfExWorkerW StringVPrintfExWorkerW_instead_use_StringCchVPrintfW_or_StringCchVPrintfExW;
1908#define StringLengthWorkerA StringLengthWorkerA_instead_use_StringCchLengthA_or_StringCbLengthA;
1909#define StringLengthWorkerW StringLengthWorkerW_instead_use_StringCchLengthW_or_StringCbLengthW;
1910#define StringGetsExWorkerA StringGetsExWorkerA_instead_use_StringCchGetsA_or_StringCbGetsA
1911#define StringGetsExWorkerW StringGetsExWorkerW_instead_use_StringCchGetsW_or_StringCbGetsW
1914#ifndef STRSAFE_NO_DEPRECATE
1915#define STRSAFE_NO_DEPRECATE
1918#ifndef STRSAFE_NO_DEPRECATE
1921#define strcpy strcpy_instead_use_StringCbCopyA_or_StringCchCopyA;
1924#define wcscpy wcscpy_instead_use_StringCbCopyW_or_StringCchCopyW;
1927#define strcat strcat_instead_use_StringCbCatA_or_StringCchCatA;
1930#define wcscat wcscat_instead_use_StringCbCatW_or_StringCchCatW;
1933#define sprintf sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA;
1936#define swprintf swprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW;
1939#define vsprintf vsprintf_instead_use_StringCbVPrintfA_or_StringCchVPrintfA;
1942#define vswprintf vswprintf_instead_use_StringCbVPrintfW_or_StringCchVPrintfW;
1945#define _snprintf _snprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA;
1948#define _snwprintf _snwprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW;
1951#define _vsnprintf _vsnprintf_instead_use_StringCbVPrintfA_or_StringCchVPrintfA;
1954#define _vsnwprintf _vsnwprintf_instead_use_StringCbVPrintfW_or_StringCchVPrintfW;
1957#define strcpyA strcpyA_instead_use_StringCbCopyA_or_StringCchCopyA;
1960#define strcpyW strcpyW_instead_use_StringCbCopyW_or_StringCchCopyW;
1963#define lstrcpy lstrcpy_instead_use_StringCbCopy_or_StringCchCopy;
1966#define lstrcpyA lstrcpyA_instead_use_StringCbCopyA_or_StringCchCopyA;
1969#define lstrcpyW lstrcpyW_instead_use_StringCbCopyW_or_StringCchCopyW;
1972#define StrCpy StrCpy_instead_use_StringCbCopy_or_StringCchCopy;
1975#define StrCpyA StrCpyA_instead_use_StringCbCopyA_or_StringCchCopyA;
1978#define StrCpyW StrCpyW_instead_use_StringCbCopyW_or_StringCchCopyW;
1981#define _tcscpy _tcscpy_instead_use_StringCbCopy_or_StringCchCopy;
1984#define _ftcscpy _ftcscpy_instead_use_StringCbCopy_or_StringCchCopy;
1987#define lstrcat lstrcat_instead_use_StringCbCat_or_StringCchCat;
1990#define lstrcatA lstrcatA_instead_use_StringCbCatA_or_StringCchCatA;
1993#define lstrcatW lstrcatW_instead_use_StringCbCatW_or_StringCchCatW;
1996#define StrCat StrCat_instead_use_StringCbCat_or_StringCchCat;
1999#define StrCatA StrCatA_instead_use_StringCbCatA_or_StringCchCatA;
2002#define StrCatW StrCatW_instead_use_StringCbCatW_or_StringCchCatW;
2005#define StrNCat StrNCat_instead_use_StringCbCatN_or_StringCchCatN;
2008#define StrNCatA StrNCatA_instead_use_StringCbCatNA_or_StringCchCatNA;
2011#define StrNCatW StrNCatW_instead_use_StringCbCatNW_or_StringCchCatNW;
2014#define StrCatN StrCatN_instead_use_StringCbCatN_or_StringCchCatN;
2017#define StrCatNA StrCatNA_instead_use_StringCbCatNA_or_StringCchCatNA;
2020#define StrCatNW StrCatNW_instead_use_StringCbCatNW_or_StringCchCatNW;
2023#define _tcscat _tcscat_instead_use_StringCbCat_or_StringCchCat;
2026#define _ftcscat _ftcscat_instead_use_StringCbCat_or_StringCchCat;
2029#define wsprintf wsprintf_instead_use_StringCbPrintf_or_StringCchPrintf;
2032#define wsprintfA wsprintfA_instead_use_StringCbPrintfA_or_StringCchPrintfA;
2035#define wsprintfW wsprintfW_instead_use_StringCbPrintfW_or_StringCchPrintfW;
2038#define wvsprintf wvsprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf;
2041#define wvsprintfA wvsprintfA_instead_use_StringCbVPrintfA_or_StringCchVPrintfA;
2044#define wvsprintfW wvsprintfW_instead_use_StringCbVPrintfW_or_StringCchVPrintfW;
2047#define _vstprintf _vstprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf;
2050#define _vsntprintf _vsntprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf;
2053#define _stprintf _stprintf_instead_use_StringCbPrintf_or_StringCchPrintf;
2056#define _sntprintf _sntprintf_instead_use_StringCbPrintf_or_StringCchPrintf;
2059#define _getts _getts_instead_use_StringCbGets_or_StringCchGets;
2062#define gets _gets_instead_use_StringCbGetsA_or_StringCchGetsA;
2065#define _getws _getws_instead_use_StringCbGetsW_or_StringCchGetsW;
2069#pragma clang diagnostic pop
#define __MINGW_EXTENSION
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
_Check_return_ _CRTIMP int __cdecl getc(_Inout_ FILE *_File)
_CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest, size_t _Count, const wchar_t *_Format, va_list _Args)
const char * STRSAFE_LPCSTR
const wchar_t * STRSAFE_LPCWSTR
#define StringVPrintfWorkerA
const char * STRSAFE_LPCSTR
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
#define STRSAFE_E_END_OF_FILE
STRSAFE_INLINE_API StringCchGetsW(STRSAFE_LPWSTR pszDest, size_t cchDest)
STRSAFE_INLINE_API StringCbGetsA(STRSAFE_LPSTR pszDest, size_t cbDest)
STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchVPrintfExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat, va_list argList)
#define StringCopyExWorkerW
STRSAFEAPI StringCbVPrintfA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszFormat, va_list argList)
#define STRSAFE_NULL_ON_FAILURE
#define StringVPrintfExWorkerW
STRSAFEAPI StringCchCopyNExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToCopy, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCbCopyNW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToCopy)
STRSAFEAPI StringCchCatA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
#define StringVPrintfWorkerW
STRSAFEAPI StringCbCopyExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchVPrintfExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat, va_list argList)
#define STRSAFE_VALID_FLAGS
STRSAFEAPI StringCbCatNA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cbToAppend)
STRSAFEAPI StringCbCopyExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define STRSAFE_FILL_ON_FAILURE
STRSAFEAPI StringCbVPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat, va_list argList)
STRSAFE_INLINE_API StringCbGetsExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFE_INLINE_API StringCchGetsExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCopyNWorkerA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToCopy)
#define StringCatExWorkerA
STRSAFEAPI StringCbLengthW(STRSAFE_LPCWSTR psz, size_t cbMax, size_t *pcbLength)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchPrintfExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat,...)
#define StringGetsExWorkerW
STRSAFEAPI StringCchCatNA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToAppend)
STRSAFEAPI StringCchCatExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCbCatNW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToAppend)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCbCatExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define StringCatExWorkerW
STRSAFEAPI StringCbLengthA(STRSAFE_LPCSTR psz, size_t cbMax, size_t *pcbLength)
#define STRSAFE_GET_FILL_PATTERN(dwFlags)
STRSAFEAPI StringCopyNExWorkerW(STRSAFE_LPWSTR pszDest, size_t cchDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
#define StringCopyWorkerA
STRSAFEAPI StringCbCatNExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToAppend, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchCatNExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToAppend, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
#define STRSAFE_E_INVALID_PARAMETER
STRSAFEAPI StringCbCatA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc)
#define StringLengthWorkerW
STRSAFEAPI StringCbCopyNA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cbToCopy)
STRSAFEAPI StringCbPrintfExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchLengthA(STRSAFE_LPCSTR psz, size_t cchMax, size_t *pcchLength)
STRSAFEAPI StringCbVPrintfExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat, va_list argList)
STRSAFEAPI StringCchCopyNExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchVPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat, va_list argList)
STRSAFEAPI StringCchCatNW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToAppend)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCbCatExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFE_INLINE_API StringCbGetsW(STRSAFE_LPWSTR pszDest, size_t cbDest)
STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
#define StringCopyWorkerW
#define StringLengthWorkerA
#define StringCopyExWorkerA
STRSAFEAPI StringCchPrintfExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat,...)
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCbPrintfExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat,...)
STRSAFEAPI StringCchCopyNW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy)
STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz, size_t cchMax, size_t *pcchLength)
STRSAFEAPI StringCbVPrintfExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat, va_list argList)
#define StringCatNWorkerA
STRSAFEAPI StringCbCopyNExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToCopy, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFE_INLINE_API StringCchGetsA(STRSAFE_LPSTR pszDest, size_t cchDest)
STRSAFE_INLINE_API StringCchGetsExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchCopyExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCatNExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToAppend, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
#define STRSAFE_IGNORE_NULLS
STRSAFEAPI StringCbCopyNExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cbToCopy, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define STRSAFE_NO_TRUNCATION
#define StringVPrintfExWorkerA
#define STRSAFE_INLINE_API
STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat,...)
#define StringGetsExWorkerA
STRSAFEAPI StringCbPrintfA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszFormat,...)
#define STRSAFE_E_INSUFFICIENT_BUFFER
STRSAFEAPI StringCopyNExWorkerA(STRSAFE_LPSTR pszDest, size_t cchDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cchToCopy, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFE_INLINE_API StringCbGetsExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define STRSAFE_FILL_BEHIND_NULL
STRSAFEAPI StringCchVPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat, va_list argList)
STRSAFEAPI StringCopyNWorkerW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy)
STRSAFEAPI StringCbCopyA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc)
const wchar_t * STRSAFE_LPCWSTR
STRSAFEAPI StringCchCatExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
#define StringCatNExWorkerA
#define StringCatNWorkerW
#define StringCatNExWorkerW
STRSAFEAPI StringCbCatNExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cbToAppend, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags