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的例子,接口類型:ISA 編號 0 地址 0xE700。設備描述如下: Offset Size Usage 0 1 Command register 1 1 Status register 2 2 Word data register 4 4 Dword data register