次の方法で共有


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 の値が NULLcbMax が NTSTRSAFE_MAX_CCH * sizeof(TCHAR) より大きい、または pszcbMax より長いことを意味します。

注釈

Strlen の代わりに RtlStringCbLengthWRtlStringCbLengthA を使用する必要があります。 これらの関数を使用して、文字列が特定の長さ (バイト単位) より大きくないことを確認します。 その条件が満たされた場合、 RtlStringCbLengthWRtlStringCbLengthA は、終端の 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