警告 C28719

禁止 API の使用: 関数名 は安全でなくなり、非推奨とマークされています。

この警告は、禁止されており、より堅牢または安全な置換を持つ関数が使用されていることを示します。

Remarks

このエラーの対象となるすべての禁止関数の一覧、禁止されている理由、および推奨される置換は、次の例の後にあります。

コード分析名: BANNED_API_USAGE

例

次のコードでは、この警告が生成されます。

void example_func(PSTR src) 
{ 
    char dst[100]; 
    strcpy(dst, src);
} 

この問題は、安全でない関数 strcpyの使用に起因します。 strcpy は、コピー先バッファーがソース データに合わせて十分な大きさであるかどうかを確認しません。

この問題を解決するには、strcpy_s C++11 の安全なこの関数の置き換えを使用できます。 strcpy_s には、3 番目のパラメーター (コピー先バッファーのサイズ) があり、多数のバイトのみがコピーされるようにします。 たとえば、次のコードの方が安全です。

void example_func(PSTR src) 
{ 
    char dst[100]; 
    strcpy_s(dst, sizeof(dst), src); 
}

禁止関数

注意: この一覧は積極的に更新され、改善されています

禁止された API 置換 根拠/注意事項
_fstrcat StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 従来の 16 ビット 遠方ポインターの実装
_fstrcpy StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 従来の 16 ビット 遠方ポインターの実装
_fstrncat StringCbCatN、 StringCbCatNEx、 StringCchCatN、 StringCchCatNEx 従来の 16 ビット 遠方ポインターの実装
_fstrncpy strncpy、wcsncpy 従来の 16 ビット 遠方ポインターの実装
_ftccat strcat、wcscat 従来の 16 ビット 遠方ポインターの実装
_ftccpy strcpy、wcscpy 従来の 16 ビット 遠方ポインターの実装
_ftcscat strcat、wcscat 従来の 16 ビット 遠方ポインターの実装
_ftcscpy strcpy、wcscpy 従来の 16 ビット 遠方ポインターの実装
_getts StringCbGets, StringCbGetsEx, StringCchGets, StringCchGetsEx, gets_s データのサイズ制限なし
_gettws gets_s データのサイズ制限なし
_getws _getws_s データのサイズ制限なし
_mbccat strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat データのサイズ制限なし
_makepath _makepath_s データのサイズ制限なし
_mbscat _mbscat_s
_snprintf _snprintf_s NULL 終了しない
_sntprintf StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx NULL 終了しない
_sntscanf _snscanf_s 最大長なし
_snwprintf _snwprintf_s, StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx NULL 終了しない
_splitpath _splitpath_s 境界チェックなし
_stprintf StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx 制限付きエラー検出
_stscanf sscanf_s (書式指定文字列の変更が必要) 境界チェックなし
_tccat strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat 境界チェックなし
_tccpy strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy 境界チェックなし
_tcscat StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
_tcscpy StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 制限付きエラー検出
_tcsncat StringCbLength、 StringCchLength、 UnalignedStringCbLength、 UnalignedStringCchLength 最大長なし
_tcsncpy StringCbCopyN、 StringCbCopyNEx、 StringCchCopyN、 StringCchCopyNEx 制限付きエラー検出
_tmakepath _makepath_s 境界チェックなし
_tscanf scanf_s 出力の境界チェックなし
_tsplitpath splitpath_s、wsplitpath_s 境界チェックなし
_vsnprintf _vsnprintf_s, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx 制限付きエラー検出
_vsntprintf StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx 制限付きエラー検出
_vsnwprintf _vsnwprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx 制限付きエラー検出
_vstprintf StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrinfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx 最大長なし
_wmakepath _wmakepath_s 境界チェックなし
_wsplitpath _wsplitpath_s 境界チェックなし
OemToCharW WideCharToMultiByte 境界チェックなし
StrCat StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
StrCatA StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
StrCatBuff StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx NULL 終了なし
StrCatBuffA StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx NULL 終了なし
StrCatBuffW StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx NULL 終了なし
StrCatChainW StringCbCatEx、 StringCbCatNEx、 StringCchCatEx、 StringCchCatNEx NULL 終了なし
StrCatN StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx 境界チェックなし
StrCatNA StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx 境界チェックなし
StrCatNW StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx 境界チェックなし
StrCatW StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx 境界チェックなし
StrCpy StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 境界チェックなし
StrCpyA StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 境界チェックなし
StrCpyN StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx NULL 終了しない
StrCpyNA StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx NULL 終了しない
StrCpyNW StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 制限付きエラー チェック
strcpyW StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 境界チェックなし
StrCpyW StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 境界チェックなし
StrNCat StringCbCatN、 StringCbCatNEx、 StringCchCatN、 StringCchCatNEx 制限付きエラー検出
StrNCatA StringCbCatN、 StringCbCatNEx、 StringCchCatN、 StringCchCatNEx 制限付きエラー検出
StrNCatW StringCbCatN、 StringCbCatNEx、 StringCchCatN、 StringCchCatNEx 制限付きエラー検出
StrNCpy StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx NULL 終了しない
StrNCpyA StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx NULL 終了しない
StrNCpyW StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx NULLで終わっていない
gets gets_s, fgets, StringCbGets, StringCbGetsEx, StringCchGets, StringCchGetsEx 制限付きエラー検出。C11 標準で非推奨
lstrcat StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
lstrcatA StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
lstrcatn StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
lstrcatnA StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
lstrcatnW StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
lstrcatW StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
lstrcpy StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 境界チェックなし
lstrcpyA StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 境界チェックなし
lstrcpyn StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 制限付きエラー検出
lstrcpynA StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 制限付きエラー検出
lstrcpynW StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 境界チェックなし
lstrcpyW StringCbCopy、 StringCbCopyEx、 StringCchCopy、 StringCchCopyEx 境界チェックなし
snscanf sscanf_s 境界チェックなし
snwscanf swscanf_s 境界チェックなし
sprintf sprintf_s 制限付きエラー検出
sprintfA sprintf_s 境界チェックなし
sprintfW swprintf_s 境界チェックなし
lstrncat StringCbCat、 StringCbCatEx、 StringCchCat、 StringCchCatEx 制限付きエラー検出
makepath
nsprintf sprintf_s エラー検出または境界チェックなし
strcat strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat 制限付きエラー検出
strcatA strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat 制限付きエラー検出
strcatW strcat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, strlcat 制限付きエラー検出
strcpy strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy 境界チェックなし
strcpyA strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy 境界チェックなし
strncat strncat_s, StringCbCatN, StringCbCatNEx, StringCchCatN, StringCchCatNEx, strlcat 制限付きエラー検出
strncpy strncpy_s, StringCbCopyN, StringCbCopyNEx, StringCchCopyN, StringCchCopyNEx, strlcpy 制限付きエラー検出
swprintf swprintf_sStringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintf, StringCbPrintfEx 制限付きエラー検出
ualstrcpyW strcpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, strlcpy 境界チェックなし
vsnprintf vsnprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx 制限付きエラー検出
vsprintf vsprintf_s, StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx, vasprintf 制限付きエラー検出
vswprintf vswprintf_s
wcscat wcscat_s, StringCbCat, StringCbCatEx, StringCchCat, StringCchCatEx, wcslcat 制限付きエラー検出
wcscpy wcscpy_s, StringCbCopy, StringCbCopyEx, StringCchCopy, StringCchCopyEx, wcslcpy 境界チェックなし
wcsncat wcsncat_s、wcslcat 制限付きエラー検出
wcsncpy wcsncpy_s, StringCbCopyN, StringCbCopyNEx, StringCchCopyN, StringCchCopyNEx, wcslcpy 制限付きエラー検出
wnsprintf StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx NULL 終了なし
wnsprintfA StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx NULL 終了なし
wsprintf StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx NULL 終了なし
wsprintfA StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx NULL 終了なし
wsprintfW StringCbPrintf, StringCbPrintf_l, StringCbPrintf_lEx, StringCbPrintfEx, StringCchPrintf, StringCchPrintfEx NULL 終了なし
wvnsprintf StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx NULL 終了なし
wvnsprintfA StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx NULL 終了なし
wvnsprintfW StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx NULL 終了なし
wvsprintf StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx NULL 終了なし
wvsprintfA StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx NULL 終了なし
wvsprintfW StringCbVPrintf, StringCbVPrintf_l, StringCbVPrintf_lEx, StringCbVPrintfEx, StringCchVPrintf, StringCchVPrintf_l, StringCchVPrintf_lEx, StringCchVPrintfEx NULL 終了なし