-
-
[旧帖]
[求助]关于RtlInitEmptyUnicodeString
0.00雪花
-
发表于:
2009-6-2 11:15
6635
-
[旧帖] [求助]关于RtlInitEmptyUnicodeString
0.00雪花
不好意思,我是初学者,对这个函数有点疑问
这个函数的定义里面有一个参数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); // 字符串拷贝!
先谢谢各位高手
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法