chacker
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望20点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
阅读:1416回复:11

一个很基础的问题,请指教

楼主#
更多 发布于:2003-05-25 18:15
常看见一些程序里面有 RtlInitUnicodeString 这个函数,我想问:这个函数用来干什么的?(好象在驱动程序里面最多出现)
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-05-25 19:45
初始化一个UNICODE string。。。
zhanghuhu
驱动小牛
驱动小牛
  • 注册日期2002-11-30
  • 最后登录2005-02-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-25 22:14
调用RtlInitUnicodeString函数来初始化UNICODE_STRING结构。UNICODE_STRING结构如下:

typedef struct _UNICODE_STRING {
    USHORT Length;    //UNICODE字符串长度
    USHORT MaximumLength;    //UNICODE字符串可存储最大长度
    PWSTR Buffer;    //存放UNICODE字符串的地址
} UNICODE_STRING *PUNICODE_STRING;

    RtlInitUnicodeString的作用其实就是把路径字符串存放到Buffer,并计算其长度,放在Length里。
多多交流
BaoFu
驱动小牛
驱动小牛
  • 注册日期2002-10-07
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-26 06:39
DDK帮助文档的索引中可以查找到这些函数的功能,不过是英文的。
chacker
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望20点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-26 11:41
调用RtlInitUnicodeString函数来初始化UNICODE_STRING结构。UNICODE_STRING结构如下:

typedef struct _UNICODE_STRING {
    USHORT Length;    //UNICODE字符串长度
    USHORT MaximumLength;    //UNICODE字符串可存储最大长度
    PWSTR Buffer;    //存放UNICODE字符串的地址
} UNICODE_STRING *PUNICODE_STRING;

    RtlInitUnicodeString的作用其实就是把路径字符串存放到Buffer,并计算其长度,放在Length里。
 


随便再问一句,如果不用这个函数,会有什么问题出现吗?
zhanghuhu
驱动小牛
驱动小牛
  • 注册日期2002-11-30
  • 最后登录2005-02-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-26 18:13
因为这个函数是初始化用的,相当于给变量赋初值,因此必须使用。
多多交流
chacker
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望20点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-26 20:19
OK,完全懂了,谢谢!
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-26 20:43
用第二个参数初始化第一个参数。
chacker
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望20点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-27 10:05
用第二个参数初始化第一个参数。


什么意思啊?不懂 :D
chacker
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望20点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-27 10:08
我又看不懂了,这段程序是什么意思啊?

WCHAR physmemName[] = L\"\\\\device\\\\physicalmemory\";

RtlInitUnicodeString( &physmenString, physmemName );

L\"\\\\device\\\\physicalmemory\";     <--这一句是什么意思?
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-05-27 12:00
我又看不懂了,这段程序是什么意思啊?

WCHAR physmemName[] = L\"\\\\device\\\\physicalmemory\";

RtlInitUnicodeString( &physmenString, physmemName );

L\"\\\\device\\\\physicalmemory\";     <--这一句是什么意思?


看看《windows核心编程》第一章
早起早睡 精神百倍
dos
dos
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2010-02-24
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-05-28 01:11
我又看不懂了,这段程序是什么意思啊?

WCHAR physmemName[] = L\"\\\\device\\\\physicalmemory\";

RtlInitUnicodeString( &physmenString, physmemName );

L\"\\\\device\\\\physicalmemory\";     <--这一句是什么意思?


普通ASCII码字符串是用子节来存放的,这里把它扩展成按字存放。
游客

返回顶部