阅读:1440回复:4
ZwWriteFile出问题了
这段代码执行后,为什么写入的数据全为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] |
|
|
沙发#
发布于:2004-11-26 14:31
没有看出你是怎么增加"9876543210"的
|
|
|
板凳#
发布于:2004-11-26 14:48
你那ZwWriteFile的参数怎么乱七八糟的?
|
|
地板#
发布于: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] |
|
|
地下室#
发布于: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的值贴上来. |
|