zh_zh_y
驱动牛犊
驱动牛犊
  • 注册日期2001-10-19
  • 最后登录2005-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1600回复:4

胡哥,帮我分析一下原因

楼主#
更多 发布于:2002-05-31 16:35
最近写了一个pci卡的驱动程序.现在出现以下情况:
1.在win98系统下,收发数据正常,但是在系统重一旦启动别的程序,比如msdn等软件时,发送数据例程会出现停止发送数据的情况;
2.在win2k系统中,没有这种现象.

我很困惑,不知道原因,快帮我分析一下.

HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2002-05-31 17:15
最近写了一个pci卡的驱动程序.现在出现以下情况:
1.在win98系统下,收发数据正常,但是在系统重一旦启动别的程序,比如msdn等软件时,发送数据例程会出现停止发送数据的情况;
2.在win2k系统中,没有这种现象.

我很困惑,不知道原因,快帮我分析一下.

 


我考,你这不是害我吗?
我怎么知道原因?我又没有你的机器,你的代码。

我只能认为是你的driver用内存用得太狠了。

我还能说什么?就算是walter oney我看也说不出什么。
不再回忆从前,我已经生活在幸福当中。
zh_zh_y
驱动牛犊
驱动牛犊
  • 注册日期2001-10-19
  • 最后登录2005-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-02 19:44
胡哥很久没有在msn上碰到你了,最近是不是很忙啊?
在应用程序和驱动程序之间,我使用的是io缓冲方式,系统会将应用程序中的数据缓冲复制一份到驱动程序,由于这种方式系统分配的是非分页内存,而系统的非分页内存是有限的,采用这种方式,是不是非常耗费资源而导致系统资源不足?
zh_zh_y
驱动牛犊
驱动牛犊
  • 注册日期2001-10-19
  • 最后登录2005-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-02 19:52
因为我们开发的卡最大可读取的最大字节数是4k,而每次发送读IRP时,由于应用程序并不知道每次读取的字节数的大小,因此每次分配的数据缓冲时,我都是按照会读取的最大的字节数来分配的,也就是4k分配的。我想这可能会导致系统内存资源的不足,你看是不是这个原因。
如果我还想继续使用IO缓冲的方式,有什么好的解决办法?
如果没有好的解决办法,是不是要使用直接缓冲的方式?
希望胡哥,尽快帮我解决这个问题。
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-02 20:32
因为我们开发的卡最大可读取的最大字节数是4k,而每次发送读IRP时,由于应用程序并不知道每次读取的字节数的大小,因此每次分配的数据缓冲时,我都是按照会读取的最大的字节数来分配的,也就是4k分配的。我想这可能会导致系统内存资源的不足,你看是不是这个原因。
如果我还想继续使用IO缓冲的方式,有什么好的解决办法?
如果没有好的解决办法,是不是要使用直接缓冲的方式?
希望胡哥,尽快帮我解决这个问题。


应该不会啊,每次你如果能正确的在IRP处理完后调用,IoCompleteRequest函数的话那么不会有资源泄露的情况。
我思故我在,脑袋不会坏.
游客

返回顶部