次の方法で共有


警告 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 StringCbCatStringCbCatExStringCchCatStringCchCatEx 従来の 16 ビット 遠方ポインターの実装
_fstrcpy StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 従来の 16 ビット 遠方ポインターの実装
_fstrncat StringCbCatNStringCbCatNExStringCchCatNStringCchCatNEx 従来の 16 ビット 遠方ポインターの実装
_fstrncpy strncpywcsncpy 従来の 16 ビット 遠方ポインターの実装
_ftccat strcatwcscat 従来の 16 ビット 遠方ポインターの実装
_ftccpy strcpywcscpy 従来の 16 ビット 遠方ポインターの実装
_ftcscat strcatwcscat 従来の 16 ビット 遠方ポインターの実装
_ftcscpy strcpywcscpy 従来の 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 StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
_tcscpy StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 制限付きエラー検出
_tcsncat StringCbLengthStringCchLengthUnalignedStringCbLengthUnalignedStringCchLength 最大長なし
_tcsncpy StringCbCopyNStringCbCopyNExStringCchCopyNStringCchCopyNEx 制限付きエラー検出
_tmakepath _makepath_s 境界チェックなし
_tscanf scanf_s 出力の境界チェックなし
_tsplitpath splitpath_swsplitpath_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 StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
StrCatA StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
StrCatBuff StringCbCatStringCbCatExStringCchCatStringCchCatEx NULL 終了なし
StrCatBuffA StringCbCatStringCbCatExStringCchCatStringCchCatEx NULL 終了なし
StrCatBuffW StringCbCatStringCbCatExStringCchCatStringCchCatEx NULL 終了なし
StrCatChainW StringCbCatExStringCbCatNExStringCchCatExStringCchCatNEx 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 StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 境界チェックなし
StrCpyA StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 境界チェックなし
StrCpyN StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx NULL 終了しない
StrCpyNA StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx NULL 終了しない
StrCpyNW StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 制限付きエラー チェック
strcpyW StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 境界チェックなし
StrCpyW StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 境界チェックなし
StrNCat StringCbCatNStringCbCatNExStringCchCatNStringCchCatNEx 制限付きエラー検出
StrNCatA StringCbCatNStringCbCatNExStringCchCatNStringCchCatNEx 制限付きエラー検出
StrNCatW StringCbCatNStringCbCatNExStringCchCatNStringCchCatNEx 制限付きエラー検出
StrNCpy StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx NULL 終了しない
StrNCpyA StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx NULL 終了しない
StrNCpyW StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx NULLで終わっていない
gets gets_s, fgets, StringCbGets, StringCbGetsEx, StringCchGets, StringCchGetsEx 制限付きエラー検出。C11 標準で非推奨
lstrcat StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
lstrcatA StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
lstrcatn StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
lstrcatnA StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
lstrcatnW StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
lstrcatW StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
lstrcpy StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 境界チェックなし
lstrcpyA StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 境界チェックなし
lstrcpyn StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 制限付きエラー検出
lstrcpynA StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 制限付きエラー検出
lstrcpynW StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 境界チェックなし
lstrcpyW StringCbCopyStringCbCopyExStringCchCopyStringCchCopyEx 境界チェックなし
snscanf sscanf_s 境界チェックなし
snwscanf swscanf_s 境界チェックなし
sprintf sprintf_s 制限付きエラー検出
sprintfA sprintf_s 境界チェックなし
sprintfW swprintf_s 境界チェックなし
lstrncat StringCbCatStringCbCatExStringCchCatStringCchCatEx 制限付きエラー検出
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_swcslcat 制限付きエラー検出
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 終了なし