Archivos de la biblioteca de Microsoft Windows


El sistema operativo Microsoft Windows admite una forma de bibliotecas compartidas conocidas como " bibliotecas de vínculos dinámicos ", que son bibliotecas de código que pueden ser utilizadas por múltiples procesos mientras solo se carga una copia en la memoria . Este artículo proporciona una descripción general de las bibliotecas principales que se incluyen con cada instalación moderna de Windows, además de las cuales se compilan la mayoría de las aplicaciones de Windows.

HAL.DLL es un archivo de biblioteca en modo kernel y no puede ser utilizado por ningún programa en modo usuario. NTDLL.DLL solo lo usan algunos programas, pero es una dependencia de la mayoría de las bibliotecas Win32 que usan los programas.

La capa de abstracción de hardware de Windows (HAL) se implementa en hal.dll . [1] El HAL implementa una serie de funciones que se implementan de diferentes maneras por diferentes plataformas de hardware, que en este contexto, se refiere principalmente al chipset . Otros componentes del sistema operativo pueden llamar a estas funciones de la misma manera en todas las plataformas, sin tener en cuenta la implementación real.

Por ejemplo, responder a una interrupción es bastante diferente en una máquina con un controlador de interrupciones programable avanzado (APIC) que en una que no lo tiene. El HAL proporciona una función única para este propósito que trabaja con todo tipo de interrupciones por varios conjuntos de chips, por lo que otros componentes no necesitan preocuparse por las diferencias.

El HAL se carga en el espacio de direcciones del kernel y se ejecuta en modo kernel, por lo que las aplicaciones no pueden llamar directamente a las rutinas en el HAL, y ninguna API de modo de usuario se corresponde directamente con las rutinas HAL. En su lugar, HAL proporciona servicios principalmente al kernel y ejecutivo de Windows y a los controladores de dispositivos en modo kernel. Aunque los controladores para la mayoría del hardware se encuentran en otros archivos, comúnmente del tipo de archivo .sys , algunos controladores principales se compilan en hal.dll .

Los controladores de dispositivos en modo kernel para dispositivos en buses como PCI y PCI Express llaman directamente a las rutinas en el HAL para acceder a los puertos de E / S y registros de sus dispositivos. Los controladores usan rutinas HAL porque diferentes plataformas pueden requerir diferentes implementaciones de estas operaciones. HAL implementa las operaciones de manera apropiada para cada plataforma, por lo que el mismo archivo ejecutable del controlador se puede usar en todas las plataformas usando la misma arquitectura de CPU , y el archivo de origen del controlador puede ser portátil en todas las arquitecturas.