Windows NT 操作系统设置的进程模式会使运行在其中的应用程序访问I/O地址的指令引起保护性的失败。这使得应用程序需要附以一个设备驱动程序进行I/O操作。设备驱动程序运行在内核模式,这使得在这种状态的中运行的进程可以执行I/O操作。
---- Windows 95/98 是仅为 Intel 类型机器设计的,没有额外复杂的I/O需求,而Windows NT 被设计成可以在不同机器机构上进行移植。这使得Windows NT 的系统模式要求驱动程序的编写者要考虑一台机器可能有多种类型的总线,这可能需要在总线之间传递地址。这种模式还要区别I/O空间和内存空间。在多总线的机器中每一总线可以既支持内存又支持I/O循环。
---- 根据定义,I/O寄存器或者端口访问是通过I/O循环实现的。然而,在一些系统中外部总线的I/O空间可以被映像到进程内存空间。硬件抽象层(Hardware Abstract Layer)决定这些。要访问I/O寄存器,驱动程序编写者必须知道寄存器在那一总线,它的I/O空间地址在那条总线。一条总线是由其接口类行 (如 ISA 、PCI 等)和编号(从零开始)决定的。
---- 下面是一个假象设备访问I/O的例子,接...[ 查看全文 ]