Configurable
Los dispositivos periféricos actuales deben ser configurables por hardware y sus controladores deben ser configurables por software.
Un dispositivo es configurable por hardware si puede aceptar diferentes asignaciones de los recursos de hardware del sistema, como números de puerto de E/S, sin modificarse físicamente. Por ejemplo, si un conjunto de discos de Plug and Play conectables de acceso frecuente están conectados en una matriz redundante de configuraciones de discos independientes (RAID), un usuario puede intercambiar discos mientras se ejecuta el sistema. Si un dispositivo es configurable por hardware, sus controladores no pueden contener valores codificados de forma rígida y dependientes del sistema para los recursos de hardware del dispositivo.
Un controlador es configurable por software si:
Puede recibir y cambiar dinámicamente los recursos de hardware de su dispositivo.
Los controladores que admiten Plug and Play no contienen valores codificados de forma rígida para los recursos de hardware de un dispositivo, ni el controlador sondea el dispositivo para determinar sus asignaciones de recursos. En su lugar, el sistema asigna dinámicamente los recursos al dispositivo y, a continuación, proporciona valores de recursos al controlador.
Se escribió sin suposiciones sobre otros controladores que podrían residir por encima o por debajo de él en su pila de controladores.
Por ejemplo, el diseño de un controlador de dispositivo de nivel inferior para un disco debe ser lo suficientemente flexible como para admitir varios sistemas de archivos implementados por varios controladores de sistema de archivos de alto nivel, posiblemente en un único equipo.
Además, si un equipo tiene suficiente capacidad de almacenamiento masivo, ese mismo controlador de disco de nivel inferior no debe interferir con la compatibilidad de un controlador intermedio para la tolerancia a errores (implementada como particiones reflejadas, conjuntos de franjas o conjuntos de volúmenes) dentro de un sistema de archivos.
El administrador de PnP y cada controlador de bus de hardware PnP trabajan juntos para proporcionar una interfaz entre el hardware de la plataforma para un tipo específico de bus de E/S y el software del sistema. El administrador de PnP crea un árbol de dispositivos, con nodos que representan todos los dispositivos del sistema, incluidos los buses. Para cada dispositivo, el administrador de PnP mantiene dos listas:
Lista de los recursos de hardware que el dispositivo puede usar.
Una lista de los recursos de hardware que se asignan realmente al dispositivo.
Los controladores de dispositivos ayudan al administrador de PnP a crear estas listas, que se mantienen en el registro. A medida que los dispositivos se agregan y quitan del sistema, el administrador de PnP reasigna los recursos según sea necesario y actualiza las listas.
El componente de capa de abstracción de hardware (HAL) del sistema, que se implementa como biblioteca de vínculos dinámicos, es responsable de parte de la compatibilidad específica de la plataforma de nivel de hardware que necesitan otros componentes del sistema, incluidos los controladores de modo kernel.