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

pcbLength

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

返回值

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

返回代码 描述
STATUS_SUCCESS
成功 状态意味着 psz 处的字符串未 NULL,字符串(包括终止 null 字符)的长度小于或等于 cbMax 字符。
STATUS_INVALID_PARAMETER
错误 状态表示 psz 中的值 NULLcbMax 大于 NTSTRSAFE_MAX_CCH * sizeof(TCHAR),或者 psz 的长度超过 cbMax

言论

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

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

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

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

要求

要求 价值
最低支持的客户端 在 Windows XP 中提供 Service Pack 1(SP1)和更高版本的 Windows。
目标平台 桌面
标头 ntstrsafe.h (包括 Ntstrsafe.h)
Ntstrsafe.lib
IRQL 如果正在作的字符串始终驻留在内存中,则为任何字符串,否则PASSIVE_LEVEL

另请参阅

RtlStringCchLength