UNICODE_STRING的拼接

像普通的字符串使用strcat一样,UNICODE_STRING也支持拼接功能。UNICODE_STRING的拼接按源字符的类型分为以下几中:

RtlAppendUnicodeToString拼接

将一个宽字节接接到UNICODE_STRING中。这里使用RtlAppendUnicodeToString函数。

NTSTATUS status;
UNICODE_STRING dst;            // 目标字符串
WCHAR dst_buf[256];                // 我们现在还不会分配内存,所以先定义缓冲区


// 把目标字符串初始化为拥有缓冲区长度为256的UNICODE_STRING空串
RtlInitEmptyUnicodeString(&dst,dst_buf,256*sizeof(WCHAR));

status = RtlAppendUnicodeToString(&dst,L"wwww.bytekits.com");

NTSTATUS是常见的返回值类型。如果函数成功,返回STATUS_SUCCESS。否则的话,是一个错误码。RtlAppendUnicodeToString在目标字符串空间不足的时候依然可以连接字符串,但是会返回一个警告性的错误STATUS_BUFFER_TOO_SMALL。

RtlAppendUnicodeStringToString拼接

另外一种情况是希望连接两个UNICODE_STRING,这种情况请调用RtlAppendUnicodeStringToString。这个函数的第二个参数也是一个UNICODE_STRING的指针。

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

    RtlInitEmptyUnicodeString(&dst, dst_buf, 256 * sizeof(WCHAR));
    status = RtlAppendUnicodeStringToString(&dst, &src);    // 字符串拷贝!

RtlAppendUnicodeStringToString在目标字符串空间不足的时候依然可以连接字符串,但是会返回一个警告性的错误STATUS_BUFFER_TOO_SMALL。

ANSI_STRING的拼接

对于ANSI_STRING类型,使用RtlAppendStringToString函数进行字符串拼接。

    NTSTATUS status;
    UNICODE_STRING dst;            
    CHAR dst_buf[256];                
    RtlInitEmptyString(dst, dst_buf, 256 * sizeof(CHAR));

    status = RtlAppendStringToString(&dst, "www.bytekits.com");
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!