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 usar 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, sobre las cuales se construyen 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] HAL implementa una serie de funciones que son implementadas de diferentes maneras por diferentes plataformas de hardware, que en este contexto, se refiere principalmente al conjunto de chips . 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 interrupción programable avanzado (APIC) que en una sin él. HAL proporciona una sola función para este propósito que funciona con todo tipo de interrupciones de varios conjuntos de chips, por lo que otros componentes no deben preocuparse por las diferencias.

La 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 de la HAL y ninguna API en modo de usuario se corresponde directamente con las rutinas de la HAL. En su lugar, la HAL proporciona servicios principalmente al ejecutivo y al kernel de Windows ya los controladores de dispositivos en modo kernel. Aunque los controladores para la mayoría del hardware están contenidos en otros archivos, comúnmente del tipo de archivo .sys , algunos controladores principales están compilados 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 HAL para acceder a los puertos de E/S y los registros de sus dispositivos. Los controladores usan rutinas HAL porque diferentes plataformas pueden requerir diferentes implementaciones de estas operaciones. HAL implementa las operaciones de forma adecuada para cada plataforma, por lo que el mismo archivo ejecutable del controlador se puede usar en todas las plataformas que usan la misma arquitectura de CPU , y el archivo de origen del controlador se puede transferir a todas las arquitecturas.