StringCbLengthW 関数 (strsafe.h)

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

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

構文

STRSAFEAPI StringCbLengthW(
  [in]  STRSAFE_PCNZWCH 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*

終端の null 文字に使用されるものを除く 、psz のバイト数。 この値は、 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 ヘッダーは、StringCbLength をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

こちらもご覧ください

StringCchLength