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

您的轻轻点拔,我受益非浅

楼主#
更多 发布于:2001-07-05 16:12
为什么我写的VXD 设备驱动程序经常死机!

znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2001-07-05 17:02
这个问题经常遇到,但没有人能回答你。因为写驱动就要忍着死机。你要看看你的内存分配经及访问的资源,调用的函数等等,细心点好,你可以先用ice调试一下,看哪部分引起死机。然后再调试。不行的话把这部分的源码帖出来。
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
whq
whq
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-06 21:19
多谢指教!

   我实在搞不明白,我在程序中钩挂了一个七号中断,(我已经把七号中断专归我所要外设,不可能产生冲突),在实际调试过程中,中断每次都能正确钩挂上,但是大多数情况下是没有响应,也就是说不进入中断服务程序!。

   我想既然每次中断都能正确钩挂和脱钩,说明问题在于CPU没有响应中断! 但我每次调试程序的时候,都没有让CPU干别的工作!
为什么有时能响应,有时又不响应中断!

  我很是困惑!
  我将原代码附上!还望多多指教!在下感激不尽!
zwwzm
驱动牛犊
驱动牛犊
  • 注册日期2001-06-25
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-07-08 08:47
我想,大概是与WINDOWS 9X 的中断体系结构有关。
 因为VXD 的中断处理器不是从IDT 直接来的。它从IDT 指向VMM
,而VMM只处理异常,它又将中断处理器指向VPCID ,最后由VPCID
来真正处理中断处理器。
 这么一大体系,使得VXD 比较肥大,所以在中断处理中,你需要
发送EOI 指令,否则就会出现你说的现象了。
 希望对你有所帮助。
zwwzm 人需要冒险!
whq
whq
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-08 15:26
谢谢大侠指教!

   我想不可能是由于没有发EOI指令的原故,因为在我的中断服务程序的指令结尾加上了 SendPhysicalEOI语句!所以说每次都已经向物理中断控制器发送了中断结束命令!

   另外我还发现产生中断之后不能正常结束!中断一直产生,我没办法,只能用结束任务来结束它!这点让我很是纳闷!

   我在OnSysDynamicDeviceExit()里头用了解挂指令,在ring3 层的控制台调度程序中用了CloseHandle (hDevice),应该来说是能正常结束的,但结果总不是我所想要的!





游客

返回顶部