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 STRSAFEAPI StringCbVPrintfExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat, va_list argList)
#define StringGetsExWorkerA
STRSAFE_INLINE_API StringCbGetsExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define StringCatNWorkerA
STRSAFEAPI StringCchCopyNW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy)
STRSAFEAPI StringCbCopyNA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cbToCopy)
STRSAFEAPI StringCbCopyNExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToCopy, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define STRSAFE_IGNORE_NULLS
STRSAFEAPI StringCbPrintfExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat,...)
STRSAFEAPI StringCbCopyNW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToCopy)
STRSAFEAPI StringCchVPrintfExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat, va_list argList)
#define StringLengthWorkerA
#define STRSAFE_INLINE_API
STRSAFEAPI StringCbLengthW(STRSAFE_LPCWSTR psz, size_t cbMax, size_t *pcbLength)
STRSAFE_INLINE_API StringCbGetsW(STRSAFE_LPWSTR pszDest, size_t cbDest)
STRSAFE_INLINE_API StringCchGetsW(STRSAFE_LPWSTR pszDest, size_t cchDest)
#define StringVPrintfWorkerA
STRSAFE_INLINE_API StringCchGetsExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFE_INLINE_API StringCchGetsA(STRSAFE_LPSTR pszDest, size_t cchDest)
_Check_return_ _CRTIMP int __cdecl getc(_Inout_ FILE *_File)
#define StringGetsExWorkerW
STRSAFEAPI StringCbCatNW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToAppend)
STRSAFEAPI StringCchVPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat, va_list argList)
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)
const char * STRSAFE_LPCSTR
#define StringCopyWorkerW
STRSAFEAPI StringCchPrintfExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat,...)
#define STRSAFE_E_INSUFFICIENT_BUFFER
STRSAFEAPI StringCchCatExA(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 StringCbVPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat, va_list argList)
STRSAFEAPI StringCbCopyExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define STRSAFE_E_INVALID_PARAMETER
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,...)
STRSAFEAPI StringCbCopyExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define StringVPrintfExWorkerW
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
STRSAFEAPI StringCbCatNExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToAppend, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchCopyNA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToCopy)
#define STRSAFE_NO_TRUNCATION
STRSAFEAPI StringCchCatA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
#define STRSAFE_NULL_ON_FAILURE
#define StringVPrintfExWorkerA
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, 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_FILL_ON_FAILURE
STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat,...)
#define __MINGW_EXTENSION
STRSAFEAPI StringCchCatNExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToAppend, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCbCopyA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc)
#define STRSAFE_FILL_BEHIND_NULL
STRSAFEAPI StringCopyNWorkerA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToCopy)
const wchar_t * STRSAFE_LPCWSTR
STRSAFEAPI StringCchCopyExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCbCatExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCbPrintfA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszFormat,...)
#define StringCopyExWorkerA
STRSAFE_INLINE_API StringCchGetsExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD 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)
STRSAFEAPI StringCbCatNA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cbToAppend)
STRSAFEAPI StringCbVPrintfA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszFormat, va_list argList)
STRSAFEAPI StringCchCatNA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToAppend)
STRSAFEAPI StringCchVPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat, va_list argList)
#define StringCatNExWorkerA
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
STRSAFEAPI StringCbCatNExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cbToAppend, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCbCatExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchCatExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchCatNW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToAppend)
#define STRSAFE_GET_FILL_PATTERN(dwFlags)
STRSAFEAPI StringCbLengthA(STRSAFE_LPCSTR psz, size_t cbMax, size_t *pcbLength)
STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCopyNWorkerW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy)
STRSAFEAPI StringCbCopyNExA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc, size_t cbToCopy, STRSAFE_LPSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
#define StringVPrintfWorkerW
STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
STRSAFEAPI StringCbCatA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc)
#define StringCatNWorkerW
STRSAFEAPI StringCchVPrintfExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat, va_list argList)
_CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest, size_t _Count, const wchar_t *_Format, va_list _Args)
const wchar_t * STRSAFE_LPCWSTR
STRSAFEAPI StringCchCopyNExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc, size_t cchToCopy, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchLengthA(STRSAFE_LPCSTR psz, size_t cchMax, size_t *pcchLength)
#define StringCopyExWorkerW
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
#define STRSAFE_E_END_OF_FILE
const char * STRSAFE_LPCSTR
STRSAFEAPI StringCbPrintfExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz, size_t cchMax, size_t *pcchLength)
STRSAFE_INLINE_API StringCbGetsA(STRSAFE_LPSTR pszDest, size_t cbDest)
#define StringLengthWorkerW
#define StringCatExWorkerW
STRSAFEAPI StringCbVPrintfExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat, va_list argList)
#define StringCopyWorkerA
STRSAFEAPI StringCchCopyNExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy, STRSAFE_LPWSTR *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)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
#define StringCatExWorkerA
#define StringCatNExWorkerW
#define STRSAFE_VALID_FLAGS