choice_lee
驱动牛犊
驱动牛犊
  • 注册日期2008-07-11
  • 最后登录2011-02-27
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3830回复:6

请教各位大牛,ZwReadFile只能同步不能异步读文件的问题

楼主#
更多 发布于:2011-02-17 01:46
请教各位大牛,用ZwReadFile()读文件的时候,只能同步读,不能异步读,即,ZwReadFile()总是返回STATUS_SUCCESS, 不返回STATUS_PENDING, 也就是说,总是等全部数据读完才返回,请问这是什么原因? ( DDK版本7600.16385.1,Win7/2008下调试)

以下为文件打开代码:
NTSTATUS nRet = ZwCreateFile( &g_hFile,
        FILE_READ_DATA,
        &aObjectAttr,
        &aIoStatus,
        0,
        FILE_ATTRIBUTE_NORMAL,
        FILE_SHARE_READ,
        FILE_OPEN_IF,
        0,//FILE_SYNCHRONOUS_IO_NONALERT,
        0,
        0 );

 NTSTATUS nRet = ZwOpenFile(
        &g_hFile,
        FILE_READ_DATA,
        &aObjectAttr,
        &aIoStatus,
        FILE_SHARE_READ,
        0);

以下为读文件代码(都是同步读,死也不异步):
nRet = ZwReadFile( g_hFile, g_EventHandle, Read_APC_ROUTINE, 0, &aIoStatus, pBuffer, 10*1024*1024, &offset, 0 );

nRet = ZwReadFile( g_hFile, 0, Read_APC_ROUTINE, 0, &aIoStatus, pBuffer, 10*1024*1024, &offset, 0 );

nRet = ZwReadFile( g_hFile, 0, 0, 0, &aIoStatus, pBuffer, 10*1024*1024, &offset, 0 );
thenshesaid
驱动牛犊
驱动牛犊
  • 注册日期2008-10-22
  • 最后登录2011-02-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2011-02-21 12:44
请GOGOLE FILE_SYNCHRONOUS_IO_ALERT
choice_lee
驱动牛犊
驱动牛犊
  • 注册日期2008-07-11
  • 最后登录2011-02-27
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2011-02-21 22:27
回 1楼(thenshesaid) 的帖子
不管是FILE_SYNCHRONOUS_IO_ALERT还是FILE_SYNCHRONOUS_IO_NONALERT都没用的,并且msdn注明了:FILE_SYNCHRONOUS开头的flag都是同步操作用的。
wanghui219
禁止发言
禁止发言
  • 注册日期2007-08-28
  • 最后登录2019-07-29
  • 粉丝4
  • 关注3
  • 积分101166分
  • 威望505351点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分4分
  • 社区居民
地板#
发布于:2011-02-22 13:10
用户被禁言,该主题自动屏蔽!
choice_lee
驱动牛犊
驱动牛犊
  • 注册日期2008-07-11
  • 最后登录2011-02-27
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2011-02-22 18:29
回 3楼(wanghui219) 的帖子
请教版主,怎么样才能触发“未决”(pending)的读请求呢?(我读的文件不小,有30M左右,buffer也设置得很大)
wanghui219
禁止发言
禁止发言
  • 注册日期2007-08-28
  • 最后登录2019-07-29
  • 粉丝4
  • 关注3
  • 积分101166分
  • 威望505351点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分4分
  • 社区居民
5楼#
发布于:2011-02-24 15:55
用户被禁言,该主题自动屏蔽!
choice_lee
驱动牛犊
驱动牛犊
  • 注册日期2008-07-11
  • 最后登录2011-02-27
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2011-02-24 23:00
回 5楼(wanghui219) 的帖子
多谢版主提点,不过有一点我不明白,您说的“自己pending”是指自己构建并发送Read IRP吗?
游客

返回顶部