waltsin
驱动牛犊
驱动牛犊
  • 注册日期2009-02-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望201点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2395回复:5

驱动中读取注册表多字符串值的问题

楼主#
更多 发布于:2009-03-17 10:24
我要写个小驱动,需要读取注册表,查了一些资料,大都是读取二进制、字符串、十六进制的,而不幸的是我需要读取多字符串值,就是REG_MULTI_SZ。
多字符串值中,每个字符串之间以\0间隔,我现在使用ZwQueryValueKey读取出一个PKEY_VALUE_PARTIAL_INFORMATION结构的数据,其中的Data是UCHAR类型的,我想把这个UCHAR的转成UNICODE_STRING结构体,使用RtlInitUnicodeString后只能得到第一个\0之前的数据和数据长度,不知道怎么不受\0的影响,把Data中的所有数据全部转换出来。求老牛们救救我吧~~~~~~~
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
沙发#
发布于:2009-03-17 22:21
You can fill a UNICODE_STRING structure:

                buff.MaximumLength = buff.Length = (SHORT)PartialInfo->DataLength;
                buff.Buffer = (PWSTR)(PartialInfo->Data);

UNICODE_STRING does support UNICODE_NULL character in the middle.
waltsin
驱动牛犊
驱动牛犊
  • 注册日期2009-02-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望201点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-03-18 16:28
Great~!
Thank you very much.
boildoctor
驱动牛犊
驱动牛犊
  • 注册日期2009-03-11
  • 最后登录2009-04-04
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-03-20 15:32
装B, 能看懂楼主的中文还用英文回答。别跟我说你直接复制的帮助文档。就算是,你就不能把英文注释删除了啊?装逼
boildoctor
驱动牛犊
驱动牛犊
  • 注册日期2009-03-11
  • 最后登录2009-04-04
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-03-20 15:53
引用第3楼boildoctor于2009-03-20 15:32发表的  :
装B, 能看懂楼主的中文还用英文回答。别跟我说你直接复制的帮助文档。就算是,你就不能把英文注释删除了啊?装逼



我对刚才说过的话表示非常惭愧和懊悔。刚才看了其他几个人提出的新手问题,michaelgz  都做出了回答,作为一个技术牛X的人,一般都不愿意给一些新手解释低级的问题。但是michaelgz 都回答了。分享和给予精神值得敬佩。

虽然都是用英语,不过我猜,这是他的风格。所以我也用英语来做正式的道歉,本人英语水平很差,但是为了尊重michaelgz ,我只好献丑了:I'm very sorry to say that words。Please forgive me for my ignorance。I'm wrong.
fazwh
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2020-11-18
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望303点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2010-06-12 14:04
受教,感谢一下。
游客

返回顶部