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 値の使用」を参照してください。
リターン コード | 説明 |
---|---|
|
この 成功 状態は、 psz の文字列が NULL ではなく、文字列の長さ (終端の null 文字を含む) が cbMax 文字以下であることを意味します。 |
|
この エラー 状態は、 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 |