du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2291回复:9

zwwritefile() 怎么用??

楼主#
更多 发布于:2002-04-12 09:32
那位大侠用过 zwwritefile()?
我想用它把我的数据结构写到文件中,可是怎么也写不进去
急死我了??

PDEVICE_EXTENSION   device_extension   //

ZwWriteFile(
                    device_extension->sec_file_handle,
                    NULL,
                    NULL,
                    NULL,
                    &In_Irp->IoStatus,
                    (PVOID)device_extension  
                    sizeof(*device_extension),
                    offset,
                    NULL)
ZwWriteFile 是不是对buffer和length有什么要求,


[编辑 -  4/12/02 作者: du_lin]
wlrwx
驱动小牛
驱动小牛
  • 注册日期2002-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望11点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-12 10:08
检查一下ZwWriteFile的返回值,看看In_Irp->IoStatus.Information的数值是多少,这个地方返回实际写入的数据长度。OFFSET设置是否正确

 :P :P :P
真正的浪子―――― 是掠过城市的微风,每个人都能感到他的清新,可没有人能留住...... 亦是划过天际的流星,所有人都能仰望他夺目的光芒,没有人能触及...... 风止于森林,流星损于黄土......非凡浪子归于他的最爱......
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-12 14:07
OFFSET 是LARGE_INTEGER
到底那一项是文件偏移量,
指点一下,怎么用?

这么创建文件是不是可以任意读写???
 ZwCreateFile(
                &device_extension->sec_file_handle,
                GENERIC_READ | GENERIC_WRITE,     &object_attributes,
                &In_Irp->IoStatus,
                &open_file_information->FileSize,     FILE_ATTRIBUTE_NORMAL,
                0,
                FILE_OPEN_IF,
                FILE_NON_DIRECTORY_FILE |
                FILE_RANDOM_ACCESS |
                FILE_NO_INTERMEDIATE_BUFFERING |
                FILE_SYNCHRONOUS_IO_NONALERT,
                NULL,
                0
                );
ymvv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-30
  • 最后登录2005-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-12 14:09
你的File Handle是否正确?应该用ZwCreateFile打开。另外,你说的写不进去是什么意思?检查ZwWriteFile的返回值了吗?说什么?
没有你,我不知道怎么办...
ymvv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-30
  • 最后登录2005-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-12 14:21
用ConvertLongToLargeInteger将偏移量转换成LARGE_INTEGER
没有你,我不知道怎么办...
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-12 15:05
zwwritefile() 的返回值是0xC0000002
STATUS_NOT_IMPLEMENTED
是不是函数未执行的意思?
有没有你调通的原码,给一段,感激不尽,  :o :o :o
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-12 15:07
文件的handle 肯定有。

ConvertLongToLargeInteger 去那里找啊?


[编辑 -  4/12/02 作者: du_lin]
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-04-12 16:31
NTSTATUS ntStatus;
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING UniFileName;
PCWSTR FileName = L\"\\\\DosDevice\\\\c:\\\\readme.txt\"

RtlInitUnicodeString(&UniFileName , FileName);
InitializeObjectAttributes(&ObjectAttributes,&UniFileName,
OBJ_CASE_INSENSITIVE,NULL,NULL);
ntStatus=ZwCreateFile(FileHandle,
GENERIC_WRITE|SYNCHRONIZE|GENERIC_READ,
&ObjectAttributes,
&IoStatusBlock,
0,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_DELETE,
FILE_OPEN_IF,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0);
//
IO_STATUS_BLOCK IoStatusBlock;
ntStatus=ZwWriteFile(FileHandle,
0,
0,
0,
&IoStatusBlock,
Buffer,
Length,
NULL,
NULL);


犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
ymvv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-30
  • 最后登录2005-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-15 07:53
对不起,是我写错了。应该是RtlConvertLongToLargeInteger
没有你,我不知道怎么办...
du_lin
驱动小牛
驱动小牛
  • 注册日期2002-01-26
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-04-15 11:46
谢谢二位
我在zwcreatefile 中改了几个参数,就行了。
游客

返回顶部