Inicio de un controlador de dispositivo

Siguiendo con SCM.

Inicio de controlador de dispositivo

SCM agrega registros en su BD para controladores de dispositivos además de los servicios. SCM inicia los controladores configurados como auto-start y detecta los errores en el inicio de los configurados como boot-start y system-start. El administrador de E/S carga los configurados como boot-start y system-start antes de que cualquier proceso se inicie en modo usuario, y por lo tanto cualquier controlador con estos tipos de inicio se cargará antes de que el propio SCM inicie.

Si un servicio que inicia SCM tiene un valor de 1 (SERVICE_KERNEL_DRIVER) o 2 (SERVICE_FILE_SYSTEM_DRIVER) en su entrada del registro, éste es un controlador de dispositivo y SCM lo cargará.

SCM habilita el privilegio de carga de controlador segura para el proceso de SCM y entonces llama a la API del Kernel NtLoadDriver, pasándole el valor de la entrada ImagePath de la subclave del registro del controlador.

Nota: A diferencia de los servicios, los controladores no necesariamente han de especificar un ImagePath, si este no existe, SCM genera uno agregando el nombre del controlador a la cadena ruta_del_sistemaSystem32Drivers.

Inicio de controladores y servicios en modo seguro

Cuando el sistema operativo se inicia en modo seguro SCM se asegura que cada servicio y controlador o está identificado por nombre o por grupo en la subclave correspondiente de la subclave SafeBoot del registro. Hay dos claves de modo seguro, Minimal y Network, en la rama HKLMSYSTEMCurrentControlSetControlSafeBoot. Cual de las dos comprobará SCM depende del modo elegido durante un reinicio del equipo.

  • Si seleccionamos Modo Seguro o Modo Seguro desde la línea de comandos en el menú de inicio (se accede mediante la pulsación de la tecla de función F8 durante el arranque), SCM lee el valor de Minimal de la clave.
  • Si seleccionamos Modo Seguro con Red, entonces SCM lee la entrada Network de la clave. La presencia de una entrada Option de tipo string en la subclave SafeBoot indica no sólo que el sistema se ha iniciado en modo seguro sino que además está seleccionado el modo usuario.

Los servicios y controladores iniciados en cada uno de los modos son:

Modo Seguro

  • Servicios de cifrado (Cryptographic services)
  • Registro de sucesos (Event log)
  • Ayuda y soporte técnico (Help and support)
  • Servicio del administrador de discos lógicos (Logical Disk Manager Administrative Service)
  • Inicio de sesión en red (Net logon)
  • Plug and play
  • Llamada a Procedimiento Remoto (Remote Procedure Call (RPC))
  • Instrumental de administración de Windows (Windows Management Instrumentation (WMI))

Modo Seguro con Red

  • AFD Networking Support Environtment
  • Examinador de equipos (Computer Browser)
  • Cliente DHCP (DHCP client)
  • Cliente DNS (DNS client)
  • Registro de sucesos (Event log)
  • Ayuda y soporte técnico (Help and support)
  • Administrador de discos lógicos (Logical Disk Manager)
  • NetBIOS Interface
  • NetBios over Tcpip
  • Inicio de sesión en red (Net logon)
  • Conexiones de red (Network Connections)
  • Plug and Play
  • Llamada a Procedimiento Remoto (Remote Procedure Call (RPC))
  • Servidor (Server)
  • Ayuda de NetBIOS sobre TCP/IP (TCP/IP NetBIOS Helper)
  • TCP/IP Protocol Driver
  • Servicios de Terminal Server (Terminal Services)
  • Instrumental de administración de Windows (Windows Management Instrumentation (WMI))
  • Estación de trabajo (Workstation)

Además del inicio de servicios, el sistema carga SCM con el propósito de cuando la configuración del registro del sistema, HKLMSYSTEMCurrentControlSet, lo indique, guardar un punto de control de Última configuración buena conocida. CurrentControlSet contiene la subclave Services, por lo tanto, incluye la representación en el registro de la BD de SCM. También contiene la subclave Control, que almacena muchos de los valores de configuración de los subsistemas modo-kernel y modo-usuario.

Predeterminadamente, un inicio con éxito consiste en un inicio correcto de los servicios auto-start y del inicio de sesión. Un proceso de inicio falla si el sistema se detiene porque un controlador de dispositivo falla y para al sistema en su arranque, o si un servicio auto-start con una entrada ErrorControl con valor 2 (SERVICE_ERROR_SEVERE) o con valor 3 (SERVICE_ERROR_CRITICAL) devuelve un error de inicio.

SCM sabe cuando se ha completado un inicio correctamente de los servicios auto-start; sin embargo, la aplicación Winlogon (ruta_del_sistemaSystem32) es la que ha de decirle que el inicio de sesión es correcto, indicando que el sistema ha procedido con éxito hasta el punto de que el conjunto de CurrentControl puede guardarse y seleccionarse como Última Configuración Buena Conocida. Cuando iniciamos sesión, Winlogon envia un mensaje al SCM, siguiendo un inicio correcto de los servicios auto-start y SCM guarda la configuración de inicio actual del registro.

La definición de inicio correcto puede ser sustituido por aplicaciones de terceros con una definición propia de dicha aplicación. Por ejemplo SQL puede no considerar un inicio como correcto hasta que SQL Server sea capaz de aceptar y procesar transacciones.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *