首页
社区
课程
招聘
[旧帖] [求助]关于RtlInitEmptyUnicodeString 0.00雪花
发表于: 2009-6-2 11:15 6636

[旧帖] [求助]关于RtlInitEmptyUnicodeString 0.00雪花

2009-6-2 11:15
6636
不好意思,我是初学者,对这个函数有点疑问

这个函数的定义里面有一个参数IN PCWSTR  Buffer,
文档里面说这个参数是一个指向调用者分配的WCHAR类型的buffer,

我不明白的是既然是初始化一个空的UnicodeString,那为什么还需要这个参数呢。

函数原型:

VOID
  RtlInitEmptyUnicodeString(
    IN OUT PUNICODE_STRING  DestinationString,
    IN PCWSTR  Buffer,
    IN USHORT  BufferSize
    );


另外在Windows驱动编程基础教程里面
字符串的拷贝这一段里面使用了以下的做法,
只是声明了一个WCHAR dst_buf[256];(注意他的解释,这个解释我没明白什么意思)
然后传给这个函数,不明白到底为什么要传这个参数,后面好像也没什么作用,
如果仅仅是为了内存的大小,那第三个参数不是BufferSize已经起到这个作用了么

UNICODE_STRING dst;            // 目标字符串
    WCHAR dst_buf[256];                // [color=#FF0000]我们现在还不会分配内存,所以先定义缓冲区[/color]
    UNICODE_STRING src = RTL_CONST_STRING(L”My source string!”);
  
    // 把目标字符串初始化为拥有缓冲区长度为256的UNICODE_STRING空串。
    RtlInitEmptyString(dst,dst_buf,256*sizeof(WCHAR));
    RtlCopyUnicodeString(&dst,&src);    // 字符串拷贝!


先谢谢各位高手

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有没有哪位高手知道啊,谢谢拉。
2009-6-2 12:47
0
雪    币: 1753
活跃值: (840)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
这个只是初始化一个长度为256的空字符串`相当于``开辟一块内存空间~
WCHAR dst_buf[256];
否者的话``就要用到内存分配ExAllocatePoolWithTag();函数
typedef struct _UNICODE_STRING
{
        USHORT Length;        // 字符串的长度(字节数)
        USHORT MaximumLength;        // 字符串缓冲区的长度(字节数)
        PWSTR        Buffer;        // 字符串缓冲区
       
} UNICODE_STRING, *PUNICODE_STRING;

很明显``你对`这个`Unicode 这个结构不熟悉`
2009-6-2 13:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼上的回答。

如果dst_buf仅仅是初始化一个长度为256的空字符串,开辟一块内存空间的话,
那我不如声明一个UNICODE_STRING,
然后手工初始化3个域(麻烦程度和调用这个函数我觉得差不多),也达到了目的,
为什么还需要用RtlInitEmptyUnicodeString这个方法来初始化呢。
2009-6-2 17:17
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
比如你要加字符串在尾部的时候就需要这个了.你用UNICODE_STRING src = RTL_CONST_STRING(L”My source string!”);是加不了字符串在后面的.
2009-11-13 16:37
0
雪    币: 250
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
你说的方法肯定是可以实现的,只是我记得那一讲就是为了介绍RtlInitEmptyUnicodeString这个函数而已...因此,这个不必深究吧
2009-11-13 16:48
0
游客
登录 | 注册 方可回帖
返回
//