Explains architecture of the User-Side Hardware Abstraction (HAL) component.

  • Specific items of hardware related information are called attributes.

    The base port customises the hal.dll library to set which attributes can be used on a device.

    Some attributes are simple values, but some attributes must be read and set with a function. These functions are called accessor functions. The base port sets identifiers for the accessor functions to use.

  • User-side programs use the user-side interface HAL class in hal.dll to get and set information about attributes.

  • The accessor functions are implemented on the kernel side by functions called HAL handlers.

    The variant DLL and many device drivers in a base port can implement HAL handlers.

  • Kernel-side programs can use the Kernel-side interface Kern::HalFunction() function to call HAL handler functions.