在98下,如果驱动程序提供了对端口访问进行捕获操作的支持,这样高层应用访问端口时,驱动程序起了中介的作用。
在2000下的驱动程序没有VXD的这个功能,想来应该不行。

解决方案 »

  1.   

    并不是ring3就不能I/O,而是没有ring0的权限,ring0可以设置一些I/O地址允许RING3访问,而另一些I/O地址不允许RING3访问。如果RING3的程序访问了不允许的地址,RING0就会截获该异常然后处理,它可以产生异常警告(非法操作),也可以什么都不干就返回(这时RING3的I/O操作实际上什么都没做)。这些都是在RING3程序什么都不知道的情况下发生的,RING3程序一直以为I/O正常。
      所以能不能I/O不RING3无关,全看操作系统愿不愿意让你操作。
      

  2.   

    靠,ring3,ring0的权限是硬件绝定的,操作系统只能规定程序在哪个方式下运行。