阅读:4730回复:61
能共享IRQ0吗? 如有好方法,200分表示感谢!!
我的8253是主板上的,我用DRIVERWORK连接IRQ0提示失败,为什么连接不到?2000下屏蔽了,能有办法吗?98下可以。IoDisconnectInterrupt能断开IRQ0和ISR的连接吗?
能共享IRQ0吗? 如有好方法,200分表示感谢!! |
|
论坛版主
![]() |
沙发#
发布于:2003-12-18 15:10
这个应该可以,2K是允许中断共享啊,不过你在确认一下,如果IRQ0有特殊需要,延迟有保障的话,可能不许其他和它共享,另外,你再看能不能设置一下你的BIOS。对了,像这种标准设备的中断服务可不可以用标准的挂接方式连到它的ISR中?象原来DOS的TSR那样就愉快了,研究出来告知:)
|
|
板凳#
发布于:2003-12-19 09:18
我看了xdjm大侠的文章,通过修改IDT的入口获取中断,不知2000下修改IDT有没有试过? |
|
地板#
发布于:2003-12-19 09:23
谢谢wxl_50685330的关注,送20分表示感谢!!!! :) :) :) |
|
论坛版主
![]() |
地下室#
发布于:2003-12-19 14:43
不好意思啊,没提供什么帮助。对了,把直接改中断向量表
的办法忘了:),但是你改IDT的话,原来的地址指向的例程记得要在你新的例程工作后继续工作,特别象这些有可能是时钟ISR的东西,如果你简单把它去掉系统时钟可能不正常了,祝兄弟成功 |
|
5楼#
发布于:2003-12-22 11:29
2000下修该IDT是不是任何中断都能获得? 软中断和硬中断一样吗? |
|
论坛版主
![]() |
6楼#
发布于:2003-12-22 16:25
你原来在DOS下看看软硬有没区别?:)IDT只是表而已,它管不着到底是硬件中断还是软中断在永吧(纯属个人猜测,不对兄弟指正)
|
|
7楼#
发布于:2003-12-22 21:16
我修改了IDT指向我的入口地址,IDT中DPC=3的可以进入,DPC=0的就没反映?DPC是什么? |
|
8楼#
发布于:2003-12-22 22:20
DPC?是不是DPL(Descriptor Privilege Level)? |
|
|
论坛版主
![]() |
9楼#
发布于:2003-12-23 00:16
你的代码是内核运行的吧,那应该权限足够高,可以改任何东西吧,你再试试,连DPL一起改了,看行不
|
|
10楼#
发布于:2003-12-23 10:49
实在抱歉,写错啦!! 是DPL(Descriptor Privilege Level) ;) ;) 0000 INTG32 0008:80465946 DPL=0 P 我把DPL改成3,他提示STATUS_ACCESS_VIOLATTON???? :( :( :( 是什么意思??? |
|
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] |
|
|
12楼#
发布于:2003-12-23 11:29
不会把,0000是INT号,0008应该才是IRQ0,我也不太肯定。 抱歉! |
|
13楼#
发布于:2003-12-23 11:33
***************************************** >> 0000 INTG32 0008:80465946 DPL=0 P 里面那个selector好象指向int 00h去乐? ***************************************** 怎样看selector好象指向int 00h?请指点一二! |
|
14楼#
发布于:2003-12-23 11:42
这个我有点记不清了,但手边没有资料. selector的低3bit实际上是RPL,高13位才是index,那么0008h实际上是指向index[1],而IDT[0]是没有用的,所以IDT[1]实际上是int 0h, 但是我的确记不清了,所以得找个人验证一下(靠,很久没用ASM,好多东西都快忘完了). PS:你是要截取时钟中断吗? |
|
|
15楼#
发布于:2003-12-23 13:36
是的,我要获取时钟中断,我用IOCONNECTINTRRUPT连接中断出错, 好象是不能共享,系统再用。我修改IDT,(用《UNDOCUMENT NT》中的HOOKINT例子)但是只能修改INT2E中断,修改INT8的中断向量进不到新的中断处理程序(用SOFTICE中的IDT命令看到INT8的中断向量已经改变)。INT2E的DPL为3,INTG32,INT8的DPL为0,TASKG,不知是不是我的程序权限不够?还是程序有问题? 帮帮我!!!!! :( :( :( :( :( |
|
16楼#
发布于:2003-12-23 15:47
全乱乐,非常对不住,我发现自己把好多地方都给搞混了(长时间没用,有情况可原,呵呵:-)
首先IDT[0]可用,而GDT和LDT[0]才是没用的,错误1. 其次我说的那个Selector不是IDT的选择子(废话,都到IDT里了),所以0008应该是指向GDT[1](GDT里第一个有用的描述符,实际上是指系统代码段),错误2. 其它的... ...等我晚上回家复习一下再说吧. |
|
|
论坛版主
![]() |
17楼#
发布于:2003-12-23 20:44
ZHULUSHENG兄弟啊,我也是2年没弄这块儿了,不好意思啊,对不住你,我回头也帮你看看,对了,我说你要改就改完,把中断服务所在段的权限全部弄成3,先看看能工作不,虽然这样做有点儿不安全。对了,你确定时钟用的是IRQ0了?,刚才看你们说那个IDT中的位置怎么是8?IRQ0怎么再用8啊?
|
|
18楼#
发布于:2003-12-23 20:50
ZHULUSHENG兄弟啊,我也是2年没弄这块儿了,不好意思啊,对不住你,我回头也帮你看看,对了,我说你要改就改完,把中断服务所在段的权限全部弄成3,先看看能工作不,虽然这样做有点儿不安全。对了,你确定时钟用的是IRQ0了?,刚才看你们说那个IDT中的位置怎么是8?IRQ0怎么再用8啊? 时钟是外部中断,实际上在NT里估计不是0也不是8,因为这个可以通过软件方式修改的,系统初始化时默认是放在8的。 但8跟double fault冲突,所以NT一定给移到别的位置了。 |
|
|
论坛版主
![]() |
19楼#
发布于:2003-12-23 20:58
嗯,这个我不好乱说了:)奔腾以后的的汇编接触不多,说得不对的请大家原谅
|
|
上一页
下一页