次の方法で共有


RtlStringCchCopyA 関数 (ntstrsafe.h)

RtlStringCchCopyW および RtlStringCchCopyA 関数は、null で終わるソース文字列を指定した長さの宛先バッファーにコピーします。

構文

NTSTRSAFEDDI RtlStringCchCopyA(
  [out] NTSTRSAFE_PSTR  pszDest,
  [in]  size_t          cchDest,
  [in]  NTSTRSAFE_PCSTR pszSrc
);

パラメーター

[out] pszDest

コピーされた文字列を受け取る呼び出し元が指定したバッファーへのポインター。 pszSrc の文字列 pszDest バッファーにコピーされ、null 文字で終了します。

[in] cchDest

コピー先バッファーのサイズ (文字数)。 使用できる最大文字数はNTSTRSAFE_MAX_CCH。

[in] pszSrc

呼び出し元が指定した null で終わる文字列へのポインター。

戻り値

この関数は、次の表に示す NTSTATUS 値のいずれかを返します。 NTSTATUS 値をテストする方法については、「NTSTATUS 値の使用」を参照してください。

リターン コード 形容
STATUS_SUCCESS
この 成功 状態は、ソース データが存在し、文字列が切り捨てられずにコピーされ、結果の宛先バッファーが null で終了したことを意味します。
STATUS_BUFFER_OVERFLOW
この 警告 状態は、バッファー領域が不足しているため、コピー操作が完了しなかったことを意味します。 コピー先バッファーには、意図した結果の、null で終わる切り捨てられたバージョンが含まれています。
STATUS_INVALID_PARAMETER
この エラー 状態は、関数が無効な入力パラメーターを受信したことを意味します。 詳細については、次の段落を参照してください。

この関数は、次の場合にSTATUS_INVALID_PARAMETER値を返します。

  • cchDest の値が最大バッファー サイズを超えています。
  • NULL ポインターが存在しました。
  • 宛先バッファーの長さは、入力時にゼロでした。

備考

RtlStringCchCopyW と rtlStringCchCopyA 、次の関数の代わりに使用する必要があります。

  • strcpy
  • wcscpy する
これらの関数は、strncpyの代わりではありません。 RtlStringCchCopyN または RtlStringCchCopyNEx して、strncpy 置き換えます。

コピー先バッファーのサイズは、RtlStringCchCopyW し、RtlStringCchCopyA してバッファーの末尾を越えて書き込まないようにするために提供されます。

Unicode 文字列 処理するには RtlStringCchCopyW を使用し、ANSI 文字列を処理するには RtlStringCchCopyA します。 次の表に示すように、使用するフォームはデータによって異なります。

文字列データ型 文字列リテラル 機能
WCHAR L"string" RtlStringCchCopyW
char する "string" RtlStringCchCopyA
 

pszSrc pszDest が重複する文字列を指している場合、関数の動作は未定義です。

pszSrc と pszDest どちらも NULL することはできません。 null 文字列ポインター値 処理する必要がある場合は、RtlStringCchCopyEx 使用します。

安全な文字列関数の詳細については、「安全な文字列関数を使用する を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP Service Pack 1 (SP1) 以降のバージョンの Windows で使用できます。
ターゲット プラットフォーム デスクトップ
ヘッダー ntstrsafe.h (Ntstrsafe.h を含む)
ライブラリ Ntstrsafe.lib
IRQL 操作される文字列が常にメモリ内に存在する場合は Any、それ以外の場合は PASSIVE_LEVEL

関連項目

RtlStringCbCopy

RtlStringCchCopyEx