阅读:1396回复:5
就是读不出来啊!zwcreatefile,zwreadfile
代码如下:
RtlInitUnicodeString( &namestring, L\"\\\\??\\\\D:\\\\thesis.zip\"); InitializeObjectAttributes(&objectattributes, &namestring, OBJ_CASE_INSENSITIVE, NULL, NULL); status=ZwCreateFile( &filehandle, SYNCHRONIZE|FILE_ANY_ACCESS, &objectattributes, &iostatus, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 ); dataofst.QuadPart=0; if(NT_SUCCESS(status)) { if(KeGetCurrentIrql()<DISPATCH_LEVEL) //分批读文件 ////////////////////////////////// ////////////////////////////////// {do{ status=ZwReadFile( &filehandle, NULL, NULL, NULL, &iostatus, databuffer, DATABUFFER_SIZE, &dataofst, NULL); dataofst.QuadPart+=DATABUFFER_SIZE; if(!NT_SUCCESS(status)) DbgPrint(\"error %L\",status); }while(NT_SUCCESS(status)); } } 用softice跟踪,filehandle有的,0x000001c4;但数据一次都读不到 是什么问题啊?救命啊!都4天了! :mad: :( 还有一个小问题,就是,dbgprint的输出值在哪里看啊???? |
|
沙发#
发布于:2002-10-24 17:26
在si看
|
|
板凳#
发布于:2002-10-24 17:36
SoftIce的命令窗就可以看到,同时你可以在应用层打开DbgView软件可以看到调试输出。DbgView可以www.sysinternals.com下载。
|
|
|
地板#
发布于:2002-10-25 08:37
ZwReadFile第一个参数应该是FileHandle,不是@FileHandle吧!
|
|
|
地下室#
发布于:2002-10-25 08:39
ZwReadFile第一个参数应该是FileHandle,不是@FileHandle吧! 你要注意看返回值,很有用的,比打印输出管用。我觉得你的返回值肯定是“非法句柄”。
[编辑 - 10/25/02 by tigerzd] |
|
|
5楼#
发布于:2002-10-25 09:38
终于搞定了,谢谢各位的解答,特别是tigerzd大虾
|
|