Windows内核编程基础篇之字符串的连接

UNICODE_STRING 字符串不再是简单的字符串。操作这个数据结构往往需要更多的耐心。读者会常常碰到这样的需求:要把两个字符串连接到一起。简单地追加一个字符串并不困难。重要的依然是保证目标字符串的空间的大小。下面是范例:

NTSTATUS status;
UNICODE_STRING dst;		//--目标字符串
WCHAR dst_buf[256];		//我们现在还不会分配内存,所以先定义缓冲区。
UNICODE_STRING src = RTL_CONSTANT_STRING(L"my first string");

//-把目标字符串初始化为拥有缓冲区长度为256的UNICODE_STRING空串
RtlInitEmptyString(dst, dst_buf, sizeof(WCHAR) * 256);
RtlCopyUnicodeString(&dst, &src);
status = RtlAppendUnicodeToString(&dst, L"my first string");
if (status != STATUS_SUCCESS)
{
	///..----do  something
}
NTSTATUS是常见的返回值类型。如果函数成功,则返回STATUS_SUCCESS,否则,则是一个错误码。RtlAppendUnicodeToString 在目标字符串空间不足的时候依然可以连接字符串,但是会返回一个警告性的错误 STATUS_BUFFER_TOO_SMALL。

另外一种情况是希望 连 两个 UNICODE_STRING ,这种情况请掉用RtlAppendUnicodeStrin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值