RtlStringCbLengthA 函数 (ntstrsafe.h)

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

语法

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 * size of (char) 。

pcbLength

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

返回值

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

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

注解

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

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

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

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

要求

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

另请参阅

RtlStringCchLength