fuyongming
驱动牛犊
驱动牛犊
  • 注册日期2005-05-30
  • 最后登录2005-10-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3625回复:12

为什么没有数据时ReadFile函数总是挂起不退出,请各位高手帮帮忙。

楼主#
更多 发布于:2005-05-31 09:27
为什么没有数据时ReadFile函数总是挂起不退出,请各位高手帮帮忙。
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-05-31 10:33
为什么没有数据时ReadFile函数总是挂起不退出,请各位高手帮帮忙。

可以用重叠IO
---内核开发合作或提供基础技术服务QQ:22863668 ---
fuyongming
驱动牛犊
驱动牛犊
  • 注册日期2005-05-30
  • 最后登录2005-10-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-31 23:17
楼上的兄弟,是把驱动的读写用同一IO吗?
能不能说具体点,谢谢!
fuyongming
驱动牛犊
驱动牛犊
  • 注册日期2005-05-30
  • 最后登录2005-10-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-06-01 09:05
是用overlaped方式吗?好象我的驱动不支持overlaped方式,用overlaped方式ReadFile总是把PC搞死,不知道如何去修改driver。
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-06-01 18:39
是用overlaped方式吗?好象我的驱动不支持overlaped方式,用overlaped方式ReadFile总是把PC搞死,不知道如何去修改driver。

把那段代码贴上来看看吧,说不定能找到问题,另外你确定是死在readfile吗?
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
fuyongming
驱动牛犊
驱动牛犊
  • 注册日期2005-05-30
  • 最后登录2005-10-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-06-02 14:59
API代码

    os.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
    if(os.hEvent==NULL)
    {
        EB_Printf(TEXT(\"[ERROR:DoRxTx      os.hEvent]\\n\"));
    }

    while((hRead = open_file(inPipe)) ==  INVALID_HANDLE_VALUE);
    
     while(1)
     {
memset(rxBuf, 0, 65);
ReadFile(hRead,rxBuf,64,&nBytesRead,&os);
EB_Printf(\"%s\", rxBuf);
     }

     循环接收数据,直接运行时会使PC复位重起,如果ReadFile之后加上1S的delay则不会使PC复位,但中间会丢失数据包。
    
     另:请问各位高手,driver中怎样使用重叠IO?没有看到相关的编程资料,哪位有这方面的资料,请提供,小弟无胜感激。
Shentu
驱动小牛
驱动小牛
  • 注册日期2004-04-05
  • 最后登录2011-01-24
  • 粉丝0
  • 关注0
  • 积分234分
  • 威望24点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-02 15:30
重叠IO需要你的API调用ReadFile的时候置上异步方式的标志,然后你的驱动也要支持,具体参考Walter Oney的书,讲的很详细的.
fuyongming
驱动牛犊
驱动牛犊
  • 注册日期2005-05-30
  • 最后登录2005-10-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-06-03 15:16
楼上的这位兄弟,太感谢了,能提供一份这样的资料吗?
fuyongming
驱动牛犊
驱动牛犊
  • 注册日期2005-05-30
  • 最后登录2005-10-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-06-03 16:47
驱动应该改动哪些方面才支持异步方式,迷糊啊。

我的驱动不停的ReadFile之后,会出现死机蓝屏的现象,且提示:

  *** STOP:0x00000001(0x00000015,0x00000002,0x00000000,0xF5B0AAC4)
  DRIVER_IRQL_NOT_LESS_OR_RQUAL
 
  *** Address F5B0AAC4 base at F5B08000, DateStamp 37fa6376 - Uhcd.sys
  Begining dump of physical Memory
fuyongming
驱动牛犊
驱动牛犊
  • 注册日期2005-05-30
  • 最后登录2005-10-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-06-03 17:12
调用ReadFile(hRead,rxBuf,65,&nBytesRead,&os);之后rxBuf中的数据正确,而nBytesRead居然是0,很是郁闷。
fuyongming
驱动牛犊
驱动牛犊
  • 注册日期2005-05-30
  • 最后登录2005-10-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-06-10 17:20
没有兄弟帮忙探讨一下吗?
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2005-06-10 18:13
驱动中处理这个OV是很容易的,把IRP立即返回一个错误(重叠IO进行中)
然后放到后面或系统线程中再处理,处理完后RESET一下这个事件就可以了。
---内核开发合作或提供基础技术服务QQ:22863668 ---
tianrongcai
驱动牛犊
驱动牛犊
  • 注册日期2005-06-24
  • 最后登录2011-03-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望39点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-07-21 16:33
That may be depending on your driver.ReadFile won't be returned if your driver always wait event signaled,even if you use overlapped IO operation.
游客

返回顶部