HAL расшифровывается как Hardware Abstraction Layer или слой абстрагированной аппаратуры. Этот уровень отделяет операционную систему от оборудования.
Как видите с реальной аппаратурой работает именно уровень HAL. Для лучшего понимания можно привести пример. Команды посылки получения данных в порты для процессоров Intel это IN и OUT. На других процессорах команды могут быть другие, в Windows NT на этот случай определены две макрокоманды read_port_uchar и write_port_uchar, которые могут использоваться вне зависимости от реального процессора. Данный механизм позволяет функционировать Windows NT на различных платформах, было бы необхомое программное обеспечение для уровня HAL. В физическом выражении это файл HAL.DLL, который находится в каталоге:
..\winnt\system32\
Который загружается первый перед загрузкой NT. Не самый первый, а первый перед началом загрузки операционной системы. Вы можете просмотреть список функций.
Часть из них вообще нигде не описана, а часть например IoMapTransfer описана в Windows NT DDK (Driver Developer Kit).