| 
			 
					阅读:1223回复:7
				 
				关于中断
					一块ISA卡,在DOS下如Init_Interrupt设置中断,中断可工作
 
							在Windows驱动中我用IoConnectInterrupt联接中断成功,但是驱动为什么总是收不到中断呢?是不是在驱动中也要对8259进行初始化, 如果是,该怎么做? 请高人指点 void Init_Interrupt( void ) { int TmpVect; int TmpIntr; int TmpPort; char Tbyte; asm CLI; TmpIntr = InterruptNum; if (TmpIntr<= 7) { /* get interrupt vector */ TmpVect = TmpIntr + 0x08; /* get port address */ TmpPort = MASTER_PIC; } else { /* get interrupt vector */ TmpVect = (TmpIntr -8) + 0x70; /* get port address */ TmpPort = SLAVE_PIC; } /* save old interruptvector */ oldhandler = getvect(TmpVect); /* set new interruptvector */ setvect(TmpVect, Timer_interrupt); /* PIC - interruptnumber */ TmpIntr &= 0x0007; TmpPort += IRQ_MASK; /* enable interrupt */ Tbyte = inportb(TmpPort); char value=Tbyte & ~(1 << TmpIntr); outportb (TmpPort, (Tbyte & ~(1 << TmpIntr)) ); Tbyte = inportb(TmpPort); asm STI; }  | 
	|
| 
			 沙发# 
								发布于:2002-12-06 10:57				
			
					确定中断为ISA保留了
 
							没有被别的设备占用  | 
	|
					
						
  | 
	
| 
			 板凳# 
								发布于:2002-12-06 11:26				
			
					是的,用的是10号中断,没被系统占用				 
							 | 
	|
| 
			 地板# 
								发布于:2002-12-06 12:36				
			
					为什么没人回答。				 
							 | 
	|
| 
			 地下室# 
								发布于:2002-12-06 13:56				
			
					用IoConnectInterrupt联接中断成功?你要看看10号中断在windows对应的是什么,不能直接挂10号				 
							 | 
	|
| 
			 5楼# 
								发布于:2002-12-06 14:12				
			
					跟踪的结果:
 
							Interrupt vector:0000003A IRQL :17 Affinity: 1 Mode: 1 应该不会错的。  | 
	|
| 
			 6楼# 
								发布于:2002-12-06 15:35				
			
					要初始化的
 
							否则设备怎么会发中断  | 
	|
					
						
  | 
	
| 
			 7楼# 
								发布于:2002-12-06 17:13				
			
					设备已经将中断发出,只是我的驱动怎么都收不到。
 
							到底是怎么回事,我都快疯掉了  | 
	|