我认为,HAL利用设备驱动程序提供硬件抽象。从某种角度来看,没有驱动程序,任何设备都无法工作。HAL更进一步提供了一个统一(或“更容易”)的应用程序API。你可以绕过HAL直接与设备驱动程序交互,但不能绕过设备驱动程序直接与硬件交互(这句话在一般情况下更或多或少是有效的,取决于操作系统和环境)。
从前,编写应用程序的程序员也会编写各种硬件的驱动程序来支持他们所需的功能。因此,如果您想开发一个需要使用网络功能的应用程序,您还需要知道如何为网络卡编写硬件驱动程序。然后出现了HAL。因此,现在软件和操作系统不再直接访问硬件,而是有一个名为HAL的中间层。HAL位于操作系统层下面或内部。 现在除了通过硬件抽象层(HAL)进行访问之外,没有人被允许访问硬件。只有HAL可以访问硬件。 现在这是标准的东西。所有开发人员只需要使游戏/应用程序与HAL配合工作即可。 现在我们有了驱动程序。驱动程序告诉HAL如何访问实际的硬件。因此,制造声卡的公司只需制作一个驱动程序,告诉HAL如何访问该声卡。 因此,总体而言,我们的软件与HAL交互,HAL使用驱动程序与硬件交互。我们正在使用驱动程序告诉HAL如何访问声卡或网络卡等。