ymvv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-30
  • 最后登录2005-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1597回复:8

如何在Driver中将一个结构的内容写进文件

楼主#
更多 发布于:2002-04-10 11:11
在NT DDK下,我调用ZwWriteFile来向文件写入数据,奇怪的是,ZwWriteFile用于放数据的参数Buffer, 类型明明是PVOID, 照理应该什么类型的数据都能写入。但现实证明,它只能写字符串,若要写一个integer, 必须自己转化。

我的问题是,如何才能将一个结构的全部内容写入文件中。我可不想一个一个地写,那太麻烦了。
没有你,我不知道怎么办...
jame.z
驱动牛犊
驱动牛犊
  • 注册日期2001-08-07
  • 最后登录2004-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-10 11:16
应该所有的指针都行(地址),在应用程序上用的处理方法应该也可以放在驱动上用,把结构体的地址传进去,如果有问题也不是这个参数有问题,另外应该还有一个长度吧~~这个问题也不大,因为长度不对也很少引起函数调用失败(除非你能传入负数)~~
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-10 12:42
在NT DDK下,我调用ZwWriteFile来向文件写入数据,奇怪的是,ZwWriteFile用于放数据的参数Buffer, 类型明明是PVOID, 照理应该什么类型的数据都能写入。但现实证明,它只能写字符串,若要写一个integer, 必须自己转化。

我的问题是,如何才能将一个结构的全部内容写入文件中。我可不想一个一个地写,那太麻烦了。


怎么可能只能写字符串?int也是存放在内存中,只是占4个字节而已。字符串也是一个一个字节存放,再加一个0x00表示结束,有什么区别?

ZwWriteFile(..,
            &Interger,
            sizeof(int),
            ...)
Buffer 传的是内存地址,不管是什么类型。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
wlrwx
驱动小牛
驱动小牛
  • 注册日期2002-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望11点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-10 13:15
按照结构写,再按照结构读不就可以了吗?为什么非要转成STRING才能写/看?不明白
真正的浪子―――― 是掠过城市的微风,每个人都能感到他的清新,可没有人能留住...... 亦是划过天际的流星,所有人都能仰望他夺目的光芒,没有人能触及...... 风止于森林,流星损于黄土......非凡浪子归于他的最爱......
ymvv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-30
  • 最后登录2005-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-10 13:52
是可以写。写入后然后读出来,正确。但是我存的.txt文件,打开来看是一堆乱码。难道不能文件扩展名不对?我想把数据记录下来,应该怎么办?
没有你,我不知道怎么办...
jame.z
驱动牛犊
驱动牛犊
  • 注册日期2001-08-07
  • 最后登录2004-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-10 14:19
那你就得一个一个安排好可视格式~~~辛苦点也是值得~~
还有你要把整数、布儿等转换成字符串,然后写入文件。

--------------------------------------------------
要可视和好看的格式,的确不容易
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
6楼#
发布于:2002-04-10 15:55
是可以写。写入后然后读出来,正确。但是我存的.txt文件,打开来看是一堆乱码。难道不能文件扩展名不对?我想把数据记录下来,应该怎么办?


你用什么打开来看?你写一个结构体到文件中,他当然是个二进制文件了,又没回车,有没有换行,还有些奇奇怪怪的字符,当然用文本编辑器没法看了,你要用二进制编辑器来看啊。
LIUTANG
驱动大牛
驱动大牛
  • 注册日期2001-03-30
  • 最后登录2020-12-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-04-10 18:31
我建议还是写进去之后再用类似UEDIT之类的软件打开来看
fkddn
驱动小牛
驱动小牛
  • 注册日期2002-03-28
  • 最后登录2005-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-11 10:09
将一个数据结构存成.txt文件会丢失数据的,txt文件有可能忽略一些编码之外的数据,存成二进制文件再用vc打开,应该可以恢复的。而且在驱动中定义的各种变量类型,每个至少占用四个字节,和应用层不太对应。
游客

返回顶部