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