tag 标签: vxd

相关博文
  • 热度 11
    2010-10-24 13:53
    1777 次阅读|
    0 个评论
    1. Windows98中,ISA中断为正脉冲,上升沿触发、高电平有效,这是由BIOS初始化8259时设定的。与DOS系统不同的是,Windows98对中断脉冲的宽度有一定的要求,这是因为,当VMM监测到IRQ上升沿后,表示有硬件中断产生,系统做一些预处理工作后将控制权交给VPICD,VPICD要重判该IRQ信号是否还存在,即IRQ是否保持高电平,如果不存在了,就不做任何处理返回了。存在才做相应的中断处理,包括用户在VxD中自定义的(虚拟)中断处理程序。由于VMM和VPICD的预处理需要一定的时间tw,此tw与系统(主要是CPU)的速度有关,因此,为了不丢失中断,即每次中断都有效,并执行用户中断处理程序,IRQ的脉冲宽度就必须大于tw。经实验检测: ● 对于“赛扬1G”CPU,tw60us ● 对于“PIV1.8G”CPU,tw30us 上述时间只是一个参考,不同机器的系统配置(如RAM大小)以及系统正在运行的进程数量都影响tw。 2. 一般用户电路产生的中断脉冲(如计数器)的宽度比较窄,最简单的方法是用一片单稳电路(如74LS123)来展宽,但这种方法有一定的局限性,即不同速度的机器,要对脉宽做相应的调整。另一种更通用的方法是,用户电路的中断脉冲先经一个D触发器(如74LS74)锁存,再送入系统IRQ引脚,进入用户中断处理程序后才将其清除,用这种方法设计的ISA卡具有通用性。 3. 在VxD驱动程序中,ISA中断一般使用VHardwareInt类虚拟化,为了使ISA中断能够在VxD中虚拟成功,必须在BIOS Setup中进入“Pnp/PCI Configurations | IRQ Resources”子菜单,将响应的IRQx置成 ,如: IRQx assigned to 4. 一般情况下,用户设计ISA中断时都使用IRQ5,但在有些机器上使用时,一装入VxD驱动程序就出错,通过调试发现是中断不能虚拟化,其原因是系统安装了声卡驱动程序,尽管使用“开始 | 程序 | 附件 | 系统工具 | 系统信息” 查看IRQ5没有被占用,但声卡的DOS驱动占用了IRQ5。解决办法有两种:一是卸载声卡的驱动程序;或者,进入“设备管理器 | 声音.视频…… | ……Audio Legacy Device | 属性 | Setting | DOS IRQ Setting ”中,不要选IRQ5(改为IRQ7),重新启动机器即可。