RtlStringCchCopyA 函数 (ntstrsafe.h)

RtlStringCchCopyWRtlStringCchCopyA 函数将以 null 结尾的源字符串复制到指定长度的目标缓冲区中。

语法

NTSTRSAFEDDI RtlStringCchCopyA(
  [out] NTSTRSAFE_PSTR  pszDest,
  [in]  size_t          cchDest,
  [in]  NTSTRSAFE_PCSTR pszSrc
);

参数

[out] pszDest

指向调用方提供的缓冲区的指针,该缓冲区接收复制的字符串。 pszSrc 中的字符串将复制到 pszDest 的缓冲区,并用 null 字符终止。

[in] cchDest

目标缓冲区的大小(以字符为单位)。 允许的最大字符数为NTSTRSAFE_MAX_CCH。

[in] pszSrc

指向调用方提供的以 null 结尾的字符串的指针。

返回值

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

返回代码 说明
STATUS_SUCCESS
成功 状态表示源数据已存在,字符串已复制且未截断,生成的目标缓冲区以 null 结尾。
STATUS_BUFFER_OVERFLOW
警告 状态表示复制操作由于缓冲区空间不足而未完成。 目标缓冲区包含预期结果的截断、以 null 结尾的版本。
STATUS_INVALID_PARAMETER
此错误状态表示函数收到了无效的输入参数。 有关详细信息,请参阅以下段落。

函数在以下情况下返回STATUS_INVALID_PARAMETER值:

  • cchDest 中的值大于最大缓冲区大小。
  • 存在 NULL 指针。
  • 入口处的目标缓冲区长度为零。

注解

应使用 RtlStringCchCopyWRtlStringCchCopyA,而不是以下函数:

  • strcpy
  • wcscpy
这些函数不是 strncpy 的替代函数。 使用 RtlStringCchCopyNRtlStringCchCopyNEx 替换 strncpy

目标缓冲区的大小(以字符为单位)提供给 RtlStringCchCopyWRtlStringCchCopyA ,以确保它们不会写入缓冲区末尾。

使用 RtlStringCchCopyW 处理 Unicode 字符串,使用 RtlStringCchCopyA 处理 ANSI 字符串。 使用的表单取决于数据,如下表所示。

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

如果 pszSrcpszDest 指向重叠字符串,则函数的行为未定义。

pszSrcpszDest 都不能为 NULL。 如果需要处理 NULL 字符串指针值,请使用 RtlStringCchCopyEx

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

要求

要求
最低受支持的客户端 在 Windows XP 中提供 Service Pack 1 (SP1) 及更高版本的 Windows。
目标平台 桌面
标头 ntstrsafe.h (包括 Ntstrsafe.h)
Library Ntstrsafe.lib
IRQL PASSIVE_LEVEL

另请参阅

RtlStringCbCopy

RtlStringCchCopyEx