次の方法で共有


RtlStringCbCopyUnicodeString 関数 (ntstrsafe.h)

RtlStringCbCopyUnicodeString 関数は、UNICODE_STRING 構造体の内容を指定されたコピー先にコピーします。

構文

NTSTRSAFEDDI RtlStringCbCopyUnicodeString(
  [out] NTSTRSAFE_PWSTR  pszDest,
  [in]  size_t           cbDest,
  [in]  PCUNICODE_STRING SourceString
);

パラメーター

[out] pszDest

コピーした文字列を受け取るバッファーへのポインター。 SourceString パラメーターの UNICODE_STRING 構造体が指す文字列は、pszDest バッファーにコピーされ、null 文字で終了します。

[in] cbDest

pszDest が指 宛先バッファーのサイズ (バイト単位)。 バッファーは、文字列と終端の null 文字を格納するのに十分な大きさである必要があります。 バッファー内の最大バイト数は NTSTRSAFE_UNICODE_STRING_MAX_CCH * sizeof(WCHAR) です。

[in] SourceString

コピーする文字列を含む UNICODE_STRING 構造体へのポインター。 文字列内の最大バイト数は、NTSTRSAFE_UNICODE_STRING_MAX_CCH * sizeof(WCHAR) です。

戻り値

RtlStringCbCopyUnicodeString は、次のいずれかの NTSTATUS 値を返します。

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

RtlStringCbCopyUnicodeString は、次のいずれかの場合にSTATUS_INVALID_PARAMETER値を返します。

  • UNICODE_STRING 構造体の内容が無効です。
  • cbDest の値が最大バッファー サイズを超えています。
  • 宛先バッファー (pszDest が指) は既にいっぱいです。
  • バッファー ポインターが NULL
  • コピー先バッファーの長さは 0 ですが、0 以外の長さのソース文字列が存在します。
NTSTATUS 値をテストする方法については、「NTSTATUS 値の使用」を参照してください。

備考

RtlStringCbCopyUnicodeString 関数は、コピー先バッファーのサイズ (cbDest パラメーター 指定) を使用して、コピー操作がバッファーの末尾を超えて書き込まれないようにします。

ソース文字列と変換先文字列が重複する場合、関数の動作は未定義です。

SourceString および pszDest ポインターを NULL することはできません。 null ポインター値 処理する必要がある場合は、RtlStringCbCopyUnicodeStringEx 関数を使用します。

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

必要条件

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

関連項目

RtlStringCbCopyUnicodeStringEx

RtlStringCchCopyUnicodeString

UNICODE_STRING