1. 程式人生 > >硬體抽象層(HAL)

硬體抽象層(HAL)

 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。