硬件抽象层(HAL)

来源:互联网 发布:软件数字证书认证中心 编辑:程序博客网 时间:2024/05/01 05:24
 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。