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