任何人都可以解释什么是Windows HAL以及它用于什么?

时间:2012-06-17 01:43:54

标签: c device drivers hal

干杯...

我知道它代表的是硬件抽象层,但究竟是什么呢?它是否设计用于VB等高级语言与硬件进行通信?那些IN / OUT指令如何调用HAL例程或者是否通过I / O管理器直接与硬件的设备驱动程序通信?

提前致谢

3 个答案:

答案 0 :(得分:5)

  

据我所知,它代表的是硬件抽象层,但究竟是什么呢?

它本质上是NT内核的“非可移植”部分,作为一个单独的模块提供,以便NT可以移植到多个处理器体系结构。示例:中断路由。

  

它是否适用于像VB这样的高级语言与硬件进行通信?

没有。它意味着NT内核的支持例程。如果您在用户模式下进行编码(就像在VB等高级语言中一样),则无需知道它是否存在。

  

IN / OUT指令如何将这些指令调用到HAL例程中,还是通过I / O管理器直接与硬件的设备驱动程序通信?

当您使用inout指令时,这是直接与CPU通信。这与您正在讨论的NT内核主题完全无关。那里没有HAL。没有NT I / O管理器。这些指令是x86指令集通过I / O地址与设备通信的指令。

答案 1 :(得分:0)

HAL旨在“抽象”远离操作系统的硬件细节(它是内核组件)。

它为内核提供了处理机器特定指令的例程(afaik包括通过上下文切换处理诸如AVX状态保存之类的事情)以及其他细节,例如中断(Google'Indrupts IDT'(无引号))

请注意,HAL并没有完全位于内核之下,因为内核在某些地方仍然直接与硬件对话,但是HAL还依赖于内核的许多功能(因此它们经常出现在匹配的'集合中) “)

http://support.microsoft.com/kb/99588

答案 2 :(得分:0)

HAL就像一个隔离层,它意味着图层两侧的东西都可以改变,并且(理论上)它对另一边没有影响。

这意味着各种不同类型的硬件可以低于HAL,并且通过HAL调用的软件无关紧要。