lstrcpyA 関数 (winbase.h)
文字列をバッファーにコピーします。
構文
LPSTR lstrcpyA(
[out] LPSTR lpString1,
[in] LPCSTR lpString2
);
パラメーター
[out] lpString1
種類: LPTSTR
lpString2 パラメーターが指す文字列の内容を受け取るバッファー。 バッファーは、終端の null 文字を含め、文字列を格納するのに十分な大きさである必要があります。
[in] lpString2
種類: LPTSTR
コピーする null で終わる文字列。
戻り値
種類: LPTSTR
関数が成功した場合、戻り値はバッファーへのポインターです。
関数が失敗した場合、戻り値は NULL で、 lpString1 は null で終了しない可能性があります。
解説
2 バイト文字セット (DBCS) バージョンのシステムでは、この関数を使用して DBCS ストリングをコピーできます。
lstrcpy 関数は、ソース バッファーと宛先バッファーが重複する場合に未定義の動作をします。
セキュリティに関する備考
この関数を誤って使用すると、アプリケーションのセキュリティが損なわれる可能性があります。 この関数は、構造化例外処理 (SEH) を使用して、アクセス違反やその他のエラーをキャッチします。 この関数は、SEH エラーをキャッチすると、文字列を null で終了せず、呼び出し元にエラーを通知せずに NULL を返します。 呼び出し元は、十分な領域がエラー状態であると見なしても安全ではありません。lpString1 は lpString2 と終了 '\0' を保持するのに十分な大きさにする必要があります。そうしないと、バッファー オーバーランが発生する可能性があります。
バッファー オーバーフローの状況は、アプリケーションの多くのセキュリティ問題の原因であり、アクセス違反が発生した場合にアプリケーションに対するサービス拒否攻撃を引き起こす可能性があります。 最悪の場合、バッファー オーバーランにより、特に lpString1 がスタック ベースのバッファーである場合に、攻撃者が実行可能コードをプロセスに挿入する可能性があります。
代わりに StringCchCopy を使用することを検討してください。をStringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);
buffer
使用します。ポインターではないか、 を使用StringCchCopy(buffer, ARRAYSIZE(buffer), src);
する必要があることに注意してください。ポインターにコピーする場合、呼び出し元は、ポイント先のメモリのサイズを文字で渡す責任があることに注意してください。
注意
winbase.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして lstrcpy を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |
関連項目
概念
リファレンス