阅读:2029回复:14
高手指点!如何让vxd中的一个控制函数独占cpu运行,屏蔽所有中断??? |
|
沙发#
发布于:2002-03-06 11:44
_asm cli;
while(1){} 但没有必要!也不可能完全真正实现! |
|
|
板凳#
发布于:2002-03-06 12:59
为什么不能真正实现呢,难道所有的中断处理程序都有被打断的可能吗?请指教
|
|
地板#
发布于:2002-03-07 13:13
你是说在VxD中吗?
应该很简单。 第一,VxD只能是用于单CPU的Win9x系统。 第二,VxD处于Ring0。 所以,只要一句: _asm cli 但是有可能在调用Windows提供的函数的时候,又被使能中断。 另外,你还可以通过8259的屏蔽寄存器禁止所有中断。 这两种方法都是由Intel的CPU规范和IBM的PC规范决定的,微软也不能超越,故肯定可靠。 |
|
地下室#
发布于:2002-03-08 15:05
\"中断控制器 8259 \"又叫\"可屏蔽中断控制器 8259 \". 外部中断里边一部分是可屏蔽中断, 一部分是不可屏蔽中断. 内部中断都是不可屏蔽中断. 所以, 通过 8259 , 无法, 也不可能禁止所有中断. |
|
5楼#
发布于:2002-03-08 18:57
拜托你看看书,什么情况下会发生“不可屏蔽中断”。
|
|
6楼#
发布于:2002-03-08 19:03
还有,cli也只能屏蔽“可屏蔽中断”。
|
|
7楼#
发布于:2002-03-09 15:22
不可屏蔽中断, 就是不能由软件屏蔽的中断. \"屏蔽所有中断\" 是不可能的.
\"掉电\"就是不可屏蔽的外部中断, 怎样编程屏蔽了它? 再就是 CPU 内部中断, 都是不可屏蔽的. 如除法出错, 一般保护异常, page fault, 如果以上中断发生, 任何程序都得被 CPU 强行中止, 而转向相应的中断处理程序. (当然, 有些程序自己替换了系统的相应的中断处理程序, 再自己主动引发相应的中断, 从而人为的引起程序的转移, 这当然是他的程序还没有结束了. 比如 CIH 病毒, 和某些加密软件.) |
|
8楼#
发布于:2002-03-11 09:53
在掉电或者奇偶校验错的时候,你的计算机还能正常运行吗?
对于INT指令,是你自己发出的,你不发出,它会执行吗? 对于异常,在NT下,所有未被截获的异常都会“BSOD”,此时,你的机器已经死了。再说,你认为驱动应该产生异常吗?还有,你知道怎样在驱动里截获异常吗? 我再次正告你:“拜托多看点书”。 在你的水平到达我值得回答问题的程度以前,我不会再同你沟通。 |
|
9楼#
发布于:2002-03-11 10:22
什么叫电脑?
请问你可以让你的大脑只想一件事,毫无杂念?两种情况: 1、你是佛祖; 2、你死掉了。 所以要解决你的问题,两种途径: 1、你的CPU就像佛祖一样不与尘世打交道,谁也不知它在干嘛; 2、将你的电脑断电。 :D :D :D |
|
|
10楼#
发布于:2002-03-13 03:43
wilton ,我只是发表自己的看法, 不是针对您. 我水平很菜, 请您及其他前辈以后多多指教, 我会继续努力学习的, 谢谢指教.
|
|
11楼#
发布于:2002-03-13 09:02
好多的高手也!!!
我要学!!! :D :D :D |
|
|
12楼#
发布于:2002-04-05 09:48
我非常同意wilton的观点!!!
~~ :D :D :D |
|
|
13楼#
发布于:2002-04-05 10:08
_asm cli
即可!当然首先得保证你的程序不产生异常。 对于NMI发生了,那系统还能工作吗? 所以,不用讨论这个无聊的情况! :P |
|
|
14楼#
发布于:2002-04-07 00:25
wilton
大哥好厉害,人家说说自己的看法你就不带人家玩呀,怎么象当年我们幼儿园的老大??人都有不懂的东西才会来这里,也都会遇到比自己水平差的人,高兴了您就帮一把,不高兴您就龇牙一乐,干嘛打击人信心呢??只显得您的水平比不上您的清~~~~高,脾气要比本事还大! 算了,不跟你玩了! :D |
|
|