次の方法で共有


StringCbLengthA 関数 (strsafe.h)

文字列が指定した長さをバイト単位で超えるかどうかを判断します。

StringCbLength は、次の関数に代わる関数です。

構文

STRSAFEAPI StringCbLengthA(
  [in]  STRSAFE_PCNZCH psz,
  [in]  size_t         cbMax,
  [out] size_t         *pcbLength
);

パラメーター

[in] psz

型: LPCTSTR

長さがチェックされる文字列。

[in] cbMax

種類: size_t

psz で許容される最大バイト数 (終端の null 文字に使用されるものも含む)。 この値は を超 STRSAFE_MAX_CCH * sizeof(TCHAR)えることはできません。

[out] pcbLength

種類: size_t*

psz 内のバイト数 (終端の null 文字に使用されるものを除く)。 この値は、 pcbNULL ではなく、関数が成功した場合にのみ有効です。

戻り値

種類: HRESULT

この関数は、次のいずれかの値を返すことができます。 SUCCEEDED マクロと FAILED マクロを使用して、この関数の戻り値をテストすることを強くお勧めします。

リターン コード 説明
S_OK
psz の文字列は NULL ではなく、文字列の長さ (終端の null 文字を含む) は cbMax 文字以下です。
STRSAFE_E_INVALID_PARAMETER
psz の値が NULLcbMax が よりSTRSAFE_MAX_CCH * sizeof(TCHAR)大きい、または pszcbMax より長い。
 

この関数は、置き換える関数とは異なり、 HRESULT 値を返します。

注釈

置き換える関数と比較して、 StringCbLength はコード内で適切なバッファー処理を行うための追加のツールです。 バッファー処理の不十分さは、バッファー オーバーランを伴う多くのセキュリティの問題に関係しています。

StringCbLength は、一般的な形式またはより具体的な形式で使用できます。 文字列のデータ型によって、使用する必要があるこの関数の形式が決まります。

文字列型 (String) リテラル文字列 機能
char "string" StringCbLengthA
TCHAR TEXT("string") StringCbLength
Wchar L"string" StringCbLengthW
 

UnalignedStringCbLength は、この関数のエイリアスです。

注意

strsafe.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして StringCbLength を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント WINDOWS XP と SP2 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 SP1 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー strsafe.h

こちらもご覧ください

StringCchLength