ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:4736回复:61

能共享IRQ0吗? 如有好方法,200分表示感谢!!

楼主#
更多 发布于:2003-12-18 10:37
我的8253是主板上的,我用DRIVERWORK连接IRQ0提示失败,为什么连接不到?2000下屏蔽了,能有办法吗?98下可以。IoDisconnectInterrupt能断开IRQ0和ISR的连接吗?
能共享IRQ0吗?



如有好方法,200分表示感谢!!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-18 15:10
这个应该可以,2K是允许中断共享啊,不过你在确认一下,如果IRQ0有特殊需要,延迟有保障的话,可能不许其他和它共享,另外,你再看能不能设置一下你的BIOS。对了,像这种标准设备的中断服务可不可以用标准的挂接方式连到它的ISR中?象原来DOS的TSR那样就愉快了,研究出来告知:)
根据地的兄弟们,团结就是力量
ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-19 09:18

我看了xdjm大侠的文章,通过修改IDT的入口获取中断,不知2000下修改IDT有没有试过?
ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-19 09:23

谢谢wxl_50685330的关注,送20分表示感谢!!!!

 :) :) :)
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-19 14:43
不好意思啊,没提供什么帮助。对了,把直接改中断向量表
的办法忘了:),但是你改IDT的话,原来的地址指向的例程记得要在你新的例程工作后继续工作,特别象这些有可能是时钟ISR的东西,如果你简单把它去掉系统时钟可能不正常了,祝兄弟成功
根据地的兄弟们,团结就是力量
ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-22 11:29

2000下修该IDT是不是任何中断都能获得?
软中断和硬中断一样吗?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-12-22 16:25
你原来在DOS下看看软硬有没区别?:)IDT只是表而已,它管不着到底是硬件中断还是软中断在永吧(纯属个人猜测,不对兄弟指正)
根据地的兄弟们,团结就是力量
ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-12-22 21:16

我修改了IDT指向我的入口地址,IDT中DPC=3的可以进入,DPC=0的就没反映?DPC是什么?
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-12-22 22:20

我修改了IDT指向我的入口地址,IDT中DPC=3的可以进入,DPC=0的就没反映?DPC是什么?


DPC?是不是DPL(Descriptor Privilege Level)?
有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-12-23 00:16
你的代码是内核运行的吧,那应该权限足够高,可以改任何东西吧,你再试试,连DPL一起改了,看行不
根据地的兄弟们,团结就是力量
ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-12-23 10:49

实在抱歉,写错啦!!
是DPL(Descriptor Privilege Level)
 ;) ;)
0000 INTG32 0008:80465946  DPL=0  P

我把DPL改成3,他提示STATUS_ACCESS_VIOLATTON???? :( :( :(

是什么意思???
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-12-23 11:19
对不起,我有点晕了,这个IRQ0是不是对应int 08h的那个时钟中断?

>> 0000 INTG32 0008:80465946 DPL=0 P
里面那个selector好象指向int 00h去乐?

那位给解释一下到底怎么回事?

[编辑 -  12/23/03 by  cool-net]
有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-12-23 11:29

不会把,0000是INT号,0008应该才是IRQ0,我也不太肯定。
抱歉!
ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-12-23 11:33

*****************************************

>> 0000 INTG32 0008:80465946 DPL=0 P
里面那个selector好象指向int 00h去乐?

*****************************************


怎样看selector好象指向int 00h?请指点一二!
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-12-23 11:42

*****************************************

>> 0000 INTG32 0008:80465946 DPL=0 P
里面那个selector好象指向int 00h去乐?

*****************************************


怎样看selector好象指向int 00h?请指点一二!


这个我有点记不清了,但手边没有资料.
selector的低3bit实际上是RPL,高13位才是index,那么0008h实际上是指向index[1],而IDT[0]是没有用的,所以IDT[1]实际上是int 0h,

但是我的确记不清了,所以得找个人验证一下(靠,很久没用ASM,好多东西都快忘完了).

PS:你是要截取时钟中断吗?
有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
ZHULUSHENG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2006-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-12-23 13:36


是的,我要获取时钟中断,我用IOCONNECTINTRRUPT连接中断出错,
好象是不能共享,系统再用。我修改IDT,(用《UNDOCUMENT NT》中的HOOKINT例子)但是只能修改INT2E中断,修改INT8的中断向量进不到新的中断处理程序(用SOFTICE中的IDT命令看到INT8的中断向量已经改变)。INT2E的DPL为3,INTG32,INT8的DPL为0,TASKG,不知是不是我的程序权限不够?还是程序有问题?


帮帮我!!!!! :( :( :( :( :(
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-12-23 15:47
全乱乐,非常对不住,我发现自己把好多地方都给搞混了(长时间没用,有情况可原,呵呵:-)

首先IDT[0]可用,而GDT和LDT[0]才是没用的,错误1.
其次我说的那个Selector不是IDT的选择子(废话,都到IDT里了),所以0008应该是指向GDT[1](GDT里第一个有用的描述符,实际上是指系统代码段),错误2.

其它的... ...等我晚上回家复习一下再说吧.
有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-12-23 20:44
ZHULUSHENG兄弟啊,我也是2年没弄这块儿了,不好意思啊,对不住你,我回头也帮你看看,对了,我说你要改就改完,把中断服务所在段的权限全部弄成3,先看看能工作不,虽然这样做有点儿不安全。对了,你确定时钟用的是IRQ0了?,刚才看你们说那个IDT中的位置怎么是8?IRQ0怎么再用8啊?
根据地的兄弟们,团结就是力量
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-12-23 20:50
ZHULUSHENG兄弟啊,我也是2年没弄这块儿了,不好意思啊,对不住你,我回头也帮你看看,对了,我说你要改就改完,把中断服务所在段的权限全部弄成3,先看看能工作不,虽然这样做有点儿不安全。对了,你确定时钟用的是IRQ0了?,刚才看你们说那个IDT中的位置怎么是8?IRQ0怎么再用8啊?

时钟是外部中断,实际上在NT里估计不是0也不是8,因为这个可以通过软件方式修改的,系统初始化时默认是放在8的。
但8跟double fault冲突,所以NT一定给移到别的位置了。
有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-12-23 20:58
嗯,这个我不好乱说了:)奔腾以后的的汇编接触不多,说得不对的请大家原谅
根据地的兄弟们,团结就是力量
上一页
游客

返回顶部