阅读:1597回复:8
如何在Driver中将一个结构的内容写进文件
在NT DDK下,我调用ZwWriteFile来向文件写入数据,奇怪的是,ZwWriteFile用于放数据的参数Buffer, 类型明明是PVOID, 照理应该什么类型的数据都能写入。但现实证明,它只能写字符串,若要写一个integer, 必须自己转化。
我的问题是,如何才能将一个结构的全部内容写入文件中。我可不想一个一个地写,那太麻烦了。 |
|
|
沙发#
发布于:2002-04-10 11:16
应该所有的指针都行(地址),在应用程序上用的处理方法应该也可以放在驱动上用,把结构体的地址传进去,如果有问题也不是这个参数有问题,另外应该还有一个长度吧~~这个问题也不大,因为长度不对也很少引起函数调用失败(除非你能传入负数)~~
|
|
板凳#
发布于:2002-04-10 12:42
在NT DDK下,我调用ZwWriteFile来向文件写入数据,奇怪的是,ZwWriteFile用于放数据的参数Buffer, 类型明明是PVOID, 照理应该什么类型的数据都能写入。但现实证明,它只能写字符串,若要写一个integer, 必须自己转化。 怎么可能只能写字符串?int也是存放在内存中,只是占4个字节而已。字符串也是一个一个字节存放,再加一个0x00表示结束,有什么区别? ZwWriteFile(.., &Interger, sizeof(int), ...) Buffer 传的是内存地址,不管是什么类型。 |
|
|
地板#
发布于:2002-04-10 13:15
按照结构写,再按照结构读不就可以了吗?为什么非要转成STRING才能写/看?不明白
|
|
|
地下室#
发布于:2002-04-10 13:52
是可以写。写入后然后读出来,正确。但是我存的.txt文件,打开来看是一堆乱码。难道不能文件扩展名不对?我想把数据记录下来,应该怎么办?
|
|
|
5楼#
发布于:2002-04-10 14:19
那你就得一个一个安排好可视格式~~~辛苦点也是值得~~
还有你要把整数、布儿等转换成字符串,然后写入文件。 -------------------------------------------------- 要可视和好看的格式,的确不容易 |
|
6楼#
发布于:2002-04-10 15:55
是可以写。写入后然后读出来,正确。但是我存的.txt文件,打开来看是一堆乱码。难道不能文件扩展名不对?我想把数据记录下来,应该怎么办? 你用什么打开来看?你写一个结构体到文件中,他当然是个二进制文件了,又没回车,有没有换行,还有些奇奇怪怪的字符,当然用文本编辑器没法看了,你要用二进制编辑器来看啊。 |
|
7楼#
发布于:2002-04-10 18:31
我建议还是写进去之后再用类似UEDIT之类的软件打开来看
|
|
8楼#
发布于:2002-04-11 10:09
将一个数据结构存成.txt文件会丢失数据的,txt文件有可能忽略一些编码之外的数据,存成二进制文件再用vc打开,应该可以恢复的。而且在驱动中定义的各种变量类型,每个至少占用四个字节,和应用层不太对应。
|
|