zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
阅读:1779回复:9

高分请教:如何与Win2000系统共享IRQ0(系统时钟中断)?

楼主#
更多 发布于:2005-05-22 22:40
要如何才能在驱动程序中挂接一个IRQ 0(系统时钟中断,就是DOS下的那个INT 8)中断服务程序呢?
我发现一个奇怪的现象:在我的兼容机(操作系统:Win2000 Professional)上,开始时用WinDriver跟踪IRQ0中断时提示不能跟踪,好像是说该中断不能被共享,可是后来不知道为何又能跟踪了,但跟踪不到任何中断到来,不过在驱动程序中已经可以用HalGetInterruptVector()获取中断向量并链接到中断,而且也确实进入了中断服务程序(每秒18次调用),在这台兼容机上可以用HalGetInterruptVector获取任何IRQ号的中断向量!可是在另一台工控机上却死活不能使用该中断,用HalGetInterruptVector()获得的向量总是0(NULL)!我实在想不出这两台机器在软件配置上有何不同,它们的操作系统完全一样,同样都安装有SoftIce3.1和WinDriver6.23,真是晕!利用这个中断的硬件定时功能对我的ISA卡很重要,我不能使用内核Timer,因为它的IRQL达不到硬件中断级别,高手们请详细说明一下要如何才能安全稳定的共享IRQ0中断,如果问题解决将不惜百分相增,即便不能解决也希望高手多谈谈这方面的经验,我将不胜感激!多谢!多谢!


[编辑 -  5/22/05 by  zhenlongyang]
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-23 21:31
此处真的是高手云集的地方么?为什么没有人回复?太简单了?还是正好相反?
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
板凳#
发布于:2005-05-23 23:02
 
我实在想不出这两台机器在软件配置上有何不同


硬件有不同吗 ??
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-23 23:16
硬件当然不同,但都属IBM兼容机系列,CPU都是Intel的。
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-24 08:42
我直接访问apic的寄存器表示那个table,发现的确我机器上的irq0的中断向量是ff,也就是莫油这个中断。但书上说的是apic的那个脚是直接和8259连上滴。
我知道的就这么多。。。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-24 16:12
我直接访问apic的寄存器表示那个table,发现的确我机器上的irq0的中断向量是ff,也就是莫油这个中断。但书上说的是apic的那个脚是直接和8259连上滴。
我知道的就这么多。。。

发现的确我机器上的irq0的中断向量是ff,这里肯定不对!!!
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-24 20:37
我直接访问apic的寄存器表示那个table,发现的确我机器上的irq0的中断向量是ff,也就是莫油这个中断。但书上说的是apic的那个脚是直接和8259连上滴。
我知道的就这么多。。。
书?哪本书?哪本书有关于apic的介绍的,能告诉我书名么?最好是介绍比较全面,市面上有售的,谢谢!
另外,IRQ0肯定是被Windows系统占用的,而且也肯定有这个中断,因为在我的兼容机上的的确确是可以在驱动程序中挂接这个中断,也的的确确看到了每秒18次的中断调用,我在驱动程序的Read例程中用DebugPrint打印一个只在中断服务程序中被改写的全局变量(每来一次中断,该变量加一),看到该变量的确每秒增加18,但是在工控机上确连取IRQ0的中断向量都无法进行。

[编辑 -  5/24/05 by  zhenlongyang]
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-25 08:53
[quote]我直接访问apic的寄存器表示那个table,发现的确我机器上的irq0的中断向量是ff,也就是莫油这个中断。但书上说的是apic的那个脚是直接和8259连上滴。
我知道的就这么多。。。

发现的确我机器上的irq0的中断向量是ff,这里肯定不对!!! [/quote]

我也觉得不可能哈。或许不是这里指出的。
不过请你访问一下:fec00000-fec00020这段内存。并把fec000000的那个byte从10依次改到3f,同时当fec000000为偶数时,看fec00010的数据,第一个byte就是中断向量号了。
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-05-25 08:56
[quote]我直接访问apic的寄存器表示那个table,发现的确我机器上的irq0的中断向量是ff,也就是莫油这个中断。但书上说的是apic的那个脚是直接和8259连上滴。
我知道的就这么多。。。
书?哪本书?哪本书有关于apic的介绍的,能告诉我书名么?最好是介绍比较全面,市面上有售的,谢谢!
另外,IRQ0肯定是被Windows系统占用的,而且也肯定有这个中断,因为在我的兼容机上的的确确是可以在驱动程序中挂接这个中断,也的的确确看到了每秒18次的中断调用,我在驱动程序的Read例程中用DebugPrint打印一个只在中断服务程序中被改写的全局变量(每来一次中断,该变量加一),看到该变量的确每秒增加18,但是在工控机上确连取IRQ0的中断向量都无法进行。

[编辑 -  5/24/05 by  zhenlongyang] [/quote]

具我所知,ichx里面有讲,
ia32 3 ,也有讲。。。。
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-05-25 10:07
浪费表情了,irq0是apic控制不了的一个中断,肯定是存在系统中,在windows下,中断号应该是0。
游客

返回顶部