警告 C28719

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

この警告は、禁止になっている関数が使用されており、より堅牢または安全な代替関数があることを示します。

解説

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

コード分析名: 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 従来の 16 ビット far ポインターの実装
_fstrcpy 従来の 16 ビット far ポインターの実装
_fstrncat 従来の 16 ビット far ポインターの実装
_fstrncpy $ 従来の 16 ビット far ポインターの実装
_ftccat $ 従来の 16 ビット far ポインターの実装
_ftccpy $ 従来の 16 ビット far ポインターの実装
_ftcscat $ 従来の 16 ビット far ポインターの実装
_ftcscpy $ 従来の 16 ビット far ポインターの実装
_getts データのサイズ制限なし
_gettws gets_s データのサイズ制限なし
_getws _getws_s データのサイズ制限なし
_mbccat データのサイズ制限なし
_makepath _makepath_s データのサイズ制限なし
_mbscat _mbscat_s
_snprintf _snprintf_s NULL 終了しない
_sntprintf NULL 終了しない
_sntscanf _snscanf_s 最大長なし
_snwprintf NULL 終了しない
_splitpath _splitpath_s 境界チェックなし
_stprintf 制限付きエラー検出
_stscanf sscanf_s (書式指定文字列の変更が必要) 境界チェックなし
_tccat 境界チェックなし
_tccpy 境界チェックなし
_tcscat 制限付きエラー検出
_tcscpy 制限付きエラー検出
_tcsncat 最大長なし
_tcsncpy 制限付きエラー検出
_tmakepath _makepath_s 境界チェックなし
_tscanf scanf_s 出力の境界チェックなし
_tsplitpath $ 境界チェックなし
_vsnprintf 制限付きエラー検出
_vsntprintf 制限付きエラー検出
_vsnwprintf 制限付きエラー検出
_vstprintf 最大長なし
_wmakepath _wmakepath_s 境界チェックなし
_wsplitpath _wsplitpath_s 境界チェックなし
OemToCharW WideCharToMultiByte 境界チェックなし
StrCat 制限付きエラー検出
StrCatA 制限付きエラー検出
StrCatBuff NULL 終了なし
StrCatBuffA NULL 終了なし
StrCatBuffW NULL 終了なし
StrCatChainW NULL 終了なし
StrCatN 境界チェックなし
StrCatNA 境界チェックなし
StrCatNW 境界チェックなし
StrCatW 境界チェックなし
StrCpy 境界チェックなし
StrCpyA 境界チェックなし
StrCpyN NULL 終了しない
StrCpyNA NULL 終了しない
StrCpyNW 制限付きエラー チェック
strcpyW 境界チェックなし
StrCpyW 境界チェックなし
StrNCat 制限付きエラー検出
StrNCatA 制限付きエラー検出
StrNCatW 制限付きエラー検出
StrNCpy NULL 終了しない
StrNCpyA NULL 終了しない
StrNCpyW NULL 終了しない
gets 制限付きエラー検出。C11 標準で非推奨
lstrcat 制限付きエラー検出
lstrcatA 制限付きエラー検出
lstrcatn 制限付きエラー検出
lstrcatnA 制限付きエラー検出
lstrcatnW 制限付きエラー検出
lstrcatW 制限付きエラー検出
lstrcpy 境界チェックなし
lstrcpyA 境界チェックなし
lstrcpyn 制限付きエラー検出
lstrcpynA 制限付きエラー検出
lstrcpynW 境界チェックなし
lstrcpyW 境界チェックなし
snscanf sscanf_s 境界チェックなし
snwscanf swscanf_s 境界チェックなし
sprintf sprintf_s 制限付きエラー検出
sprintfA sprintf_s 境界チェックなし
sprintfW swprintf_s 境界チェックなし
lstrncat 制限付きエラー検出
makepath
nsprintf sprintf_s エラー検出または境界チェックなし
strcat 制限付きエラー検出
strcatA 制限付きエラー検出
strcatW 制限付きエラー検出
strcpy 境界チェックなし
strcpyA 境界チェックなし
strncat 制限付きエラー検出
strncpy 制限付きエラー検出
swprintf 制限付きエラー検出
ualstrcpyW 境界チェックなし
vsnprintf 制限付きエラー検出
vsprintf 制限付きエラー検出
vswprintf vswprintf_s
wcscat 制限付きエラー検出
wcscpy 境界チェックなし
wcsncat $ 制限付きエラー検出
wcsncpy 制限付きエラー検出
wnsprintf NULL 終了なし
wnsprintfA NULL 終了なし
wsprintf NULL 終了なし
wsprintfA NULL 終了なし
wsprintfW NULL 終了なし
wvnsprintf NULL 終了なし
wvnsprintfA NULL 終了なし
wvnsprintfW NULL 終了なし
wvsprintf NULL 終了なし
wvsprintfA NULL 終了なし
wvsprintfW NULL 終了なし