RtlStringCbLengthA 関数 (ntstrsafe.h)

RtlStringCbLengthW 関数と RtlStringCbLengthA 関数は、指定された文字列の長さをバイト単位で決定します。

構文

NTSTRSAFEDDI RtlStringCbLengthA(
  [in] STRSAFE_PCNZCH psz,
  [in] size_t         cbMax,
       size_t         *pcbLength
);

パラメーター

[in] psz

null で終わる文字列を含むバッファーへのポインター。その長さがチェックされます。

[in] cbMax

psz が指すバッファーで許容される最大バイト数 (終端の null 文字を含む)。

Unicode 文字列の場合、最大バイト数は NTSTRSAFE_MAX_CCH * sizeof(WCHAR) です。

ANSI 文字列の場合、最大バイト数は NTSTRSAFE_MAX_CCH * sizeof(char) です。

pcbLength

呼び出し元が NULL 以外のアドレス ポインターを提供する場合、関数は、バッファーに含まれる文字列の長さ (バイト単位) でアドレスを読み込みます。 長さには、文字列の終端の null 文字は含まれません。

戻り値

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

リターン コード 説明
STATUS_SUCCESS
この 成功 状態は、 psz の文字列が NULL ではなく、文字列の長さ (終端の null 文字を含む) が cbMax 文字以下であることを意味します。
STATUS_INVALID_PARAMETER
この エラー 状態は、 psz の値が NULL、 cbMax が NTSTRSAFE_MAX_CCH * sizeof(TCHAR) より大きい、または psz が cbMax より長いことを意味します。

注釈

Strlen の代わりに RtlStringCbLengthW と RtlStringCbLengthA を使用する必要があります。 これらの関数を使用して、文字列が特定の長さ (バイト単位) より大きくないことを確認します。 その条件が満たされた場合、 RtlStringCbLengthW と RtlStringCbLengthA は、終端の null 文字に使用されたバイトを含まない、文字列の現在の長さをバイト単位で返します。

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

文字列データ型 文字列リテラル 機能
WCHAR L"string" RtlStringCbLengthW
char "string" RtlStringCbLengthA
 

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

要件

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

こちらもご覧ください

RtlStringCchLength