aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
阅读:1440回复:4

ZwWriteFile出问题了

楼主#
更多 发布于:2004-11-26 11:42
这段代码执行后,为什么写入的数据全为0x00?
也就是说:
例如,我在tempbuffer后面添加10个字符,例如"9876543210",应该显示结果为“abcdefg9876543210”。但是实际结果为“abcdefgt _____________”。“_”全为0x00(这里空格显示不出来)。

//tempbuffer = “abcdefg”

ZwCreateFile( &ntFileHandle,
 FILE_WRITE_DATA,
 &objectAttributes,
&ioStatus,
 NULL,
0,
0,
FILE_OVERWRITE_IF,//FILE_OPEN,
FILE_SYNCHRONOUS_IO_NONALERT|FILE_NO_INTERMEDIATE_BUFFERING,NULL, 0 );

ZwWriteFile(ntFileHandle,
NULL,
NULL,
NULL,
&Irp->IoStatus,
tempbuffer,//tempbuffer = “9876543210”
10,//写入数据的长度sizeof(tempbuffer) == 10
-1,//偏移,写到文件的结尾。
NULL
);


ZwClose(ntFileHandle);



[编辑 -  11/26/04 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-26 14:31
没有看出你是怎么增加"9876543210"的
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
toadwolf
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2013-11-12
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-26 14:48
你那ZwWriteFile的参数怎么乱七八糟的?
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-26 14:57
ZwWriteFile(ntFileHandle,
NULL,
NULL,
NULL,
&Irp->IoStatus,
tempbuffer,//tempbuffer = “9876543210”
10,//写入数据的长度sizeof(tempbuffer) == 10
-1,//偏移,写到文件的结尾。
NULL
);


[编辑 -  11/26/04 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
toadwolf
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2013-11-12
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-26 15:16
倒数第二个参数不对.

MSDN:
It is also possible to cause a write operation to start at the current end of file by specifying for ByteOffset a pointer to a LARGE_INTEGER value with HighPart set to -1 and LowPart set to FILE_WRITE_TO_END_OF_FILE. This works whether or not the I/O Manager is maintaining the current file position.

如果还不行就把该函数的返回值和Irp->IoStatus.Information的值贴上来.
游客

返回顶部