硬體抽象層(HAL)
阿新 • • 發佈:2019-02-08
Windows設計的關鍵要素之一是,它能被移植到各種不同的硬體平臺上。硬體抽象層是使得這種移植性成為可能的一個關鍵部分。HAL是一個可載入的、核心模式的模組,它提供了針對Windows當前執行所在的硬體平臺的低層介面。它隱藏了與硬體相關的細節,比如I/O介面、中斷控制器,以及多處理器通訊機制——任何與體系結構相關或者與機器相關的功能。
所以, Windows內部元件以及使用者編寫的裝置驅動程式並不直接訪問硬體;相反,當它們需要獲得與平臺相關的資訊時,它們可以通過呼叫HAL例程來保持可移植性。出於這一原因,針對這些HAL例程,也有相應的文件包含在Windows DDK中。要想找到更多有關HAL及其在裝置驅動程式中用法的資訊,請參考DDK。
雖然 Windows隨帶了幾個HAL(見表2.6),但是在安裝的時候只有一個HAL被選中,並且被拷貝到系統磁碟上,其檔名為Hal.dll(其他的作業系統,比如VMS,在系統引導的時候選擇一個等價於HAL的模組)。因此,如果支援兩個不同處理器的HAL有所不同的話,你就不能這樣假設:一個x86已安裝系統的系統磁碟也可以在另一個處理器上引導。
表2.6 在/Windows/Driver Cache/i386/Driver.cab中的x86 HAL列表
HAL檔名 |
所支援的系統 |
Hal.dll |
標準PC |
Halacpi.dll |
高階配置和電源介面(ACPI) PC |
Halapic.dll |
高階可程式設計中斷控制器(APIC) PC |
Halaacpi.dll |
APIC ACPI PC |
Halmps.dll |
多處理器PC |
Halmacpi.dll |
多處理器ACPI PC |
Halborg.dll |
Silicon圖形工作站(僅僅在Windows 2000中才有,市場上已經不再銷售) |
Halsp.dll |
Compaq SystemPro (僅僅在Windows XP中才有) |
注 從Windows Server 2003開始,在Windows基本系統中不再隨帶與特定廠商相關的HAL。