cbns888
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2009-04-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望64点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
阅读:1355回复:1

还是老问题:打开文件成功,也能取得文件长度,就是ZwReadFile取不到文件内容?

楼主#
更多 发布于:2003-10-23 01:57
打开文件成功,也能取得文件长度,就是ZwReadFile的时候取不到内容,头都快大了!

WCHAR filename[] = L\"\\\\??\\\\e:\\\\filelist.dat\";

    RtlInitUnicodeString( &fileNameUnicodeString, filename );
    InitializeObjectAttributes( &objectAttributes, &fileNameUnicodeString,
                                OBJ_CASE_INSENSITIVE, NULL, NULL );
AllocationSize = NULL;
    ntStatus = ZwCreateFile( &ntFileHandle,
SYNCHRONIZE | FILE_READ_DATA,
&objectAttributes,
&ioStatus,
AllocationSize,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ,
FILE_OPEN,
FILE_SEQUENTIAL_ONLY | FILE_NO_INTERMEDIATE_BUFFERING,
NULL,
0 );

    if( !NT_SUCCESS( ntStatus ) )
{

        DbgPrint(\"file :Could not open file\");
        return ;
    }

ntStatus = ZwQueryInformationFile( ntFileHandle,
 &ioStatus,
 &StandardInfo,
 sizeof(FILE_STANDARD_INFORMATION),
 FileStandardInformation );


    if( !NT_SUCCESS( ntStatus ) )
{
DbgPrint (\"Error querying info on file %x\\n\", ntStatus );
ZwClose( ntFileHandle );
return ;
}
DbgPrint( \"File length is  %d\\n\", StandardInfo.EndOfFile.QuadPart);

//创建存放文件内容的缓冲区
byteoffset.QuadPart =0;
ntStatus = ZwReadFile( ntFileHandle,
 NULL,
 NULL,
 NULL,
 &IoFileReadStatus,
 pBuffer,
 7,//StandardInfo.EndOfFile.QuadPart,
 &byteoffset,
 NULL );

    if( !NT_SUCCESS( ntStatus ) )
{
DbgPrint( \"ZwReadFile Error!!\\n\");
return ;
}

DbgPrint(\"Status returned from ZwReadFile  says we just read: 0x%d bytes.\\n\", IoFileReadStatus.Information);

DbgPrint( \"File:%s \\n\", pBuffer);

wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2003-10-23 09:02
因为有了FILE_NO_INTERMEDIATE_BUFFERING,因为没有中间缓存,所以所有操作都要512*N
所以
ntStatus = ZwReadFile( ntFileHandle,
NULL,
NULL,
NULL,
&IoFileReadStatus,
pBuffer,
512,//StandardInfo.EndOfFile.QuadPart,(至少要512)
&byteoffset,
NULL );
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部