RtlStringCchLengthW 函数 (ntstrsafe.h)

RtlStringCchLengthWRtlStringCchLengthA 函数确定提供的字符串的长度(以字符为单位)。

语法

NTSTRSAFEDDI RtlStringCchLengthW(
  [in] STRSAFE_PCNZWCH psz,
  [in] size_t          cchMax,
       size_t          *pcchLength
);

参数

[in] psz

指向缓冲区的指针,该缓冲区包含以 null 结尾的字符串,将检查其长度。

[in] cchMax

psz 指向的缓冲区中允许的最大字符数,包括终止 null 字符。 此值不能超过 NTSTRSAFE_MAX_CCH。

pcchLength

如果调用方提供非 NULL 地址指针,则该函数将加载包含缓冲区中的字符串的长度(以字符为单位)的地址。 长度不包括字符串的终止 null 字符。

返回值

该函数返回下表中列出的 NTSTATUS 值之一。 有关如何测试 NTSTATUS 值的信息,请参阅 使用 NTSTATUS 值

返回代码 说明
STATUS_SUCCESS
此成功状态表示 psz 处的字符串不为 NULL,并且字符串的长度 (包括终止 null 字符) 小于或等于 cchMax 字符。
STATUS_INVALID_PARAMETER
此错误状态表示 psz 中的值为 NULLcchMax 大于 NTSTRSAFE_MAX_CCH 或 psz 长于 cchMax

注解

应使用 RtlStringCchLengthWRtlStringCchLengthA 而不是 strlen。 它们用于确保字符串不大于给定长度(以字符为单位)。 如果满足该条件, RtlStringCchLengthWRtlStringCchLengthA 返回字符串的当前长度(以字符为单位),不包括终止 null 字符。

使用 RtlStringCchLengthW 处理 Unicode 字符串,使用 RtlStringCchLengthA 处理 ANSI 字符串。 使用的窗体取决于你的数据,如下表所示。

字符串数据类型 字符串文本 函数
WCHAR L“string” RtlStringCchLengthW
char “字符串” RtlStringCchLengthA
 

有关安全字符串函数的详细信息,请参阅 使用安全字符串函数

要求

要求
最低受支持的客户端 在 Windows 的 Service Pack 1 (SP1) 及更高版本的 Windows 中可用。
目标平台 桌面
标头 ntstrsafe.h (包括 Ntstrsafe.h)
Library Ntstrsafe.lib
IRQL 如果正在操作的字符串始终驻留在内存中,则为 Any,否则PASSIVE_LEVEL

另请参阅

RtlStringCbLength