Compartir a través de


Evitar reinicios del sistema durante las instalaciones de dispositivos y el controlador Novedades

Para evitar reinicios del sistema durante las instalaciones del dispositivo, use las reglas siguientes:

  • No use nunca las entradas Reiniciar o Reiniciar en las secciones INF DDInstall. Estas directivas se proporcionaron originalmente para la compatibilidad con Windows 9x/Me y no deben usarse para Windows 2000 y versiones posteriores de Windows.

  • No use COPYFLG_FORCE_FILE_IN_USE ni marcas COPYFLG_REPLACE_BOOT_FILE con directivas CopyFiles inf, a menos que sea absolutamente necesario.

  • Haga que todos los archivos del paquete de controladores se ejecuten desde el almacén de controladores.

  • Si los archivos del paquete de controladores no se ejecutan desde el Almacén de controladores, asigne un nuevo nombre de archivo a cada nueva versión de un instalador de clase o coinstalador, o a un archivo DLL de servicio. Esto evita la necesidad de reiniciar el sistema si hay una versión anterior en uso. (De hecho, si no se usa un nuevo nombre de archivo para un instalador de clase actualizado o un coinstalador de clase, estos nuevos archivos no se usarán para la instalación).

  • Para actualizar los controladores de un dispositivo, siga las reglas que aparecen en Actualizar archivos de controlador.

Minimizar los reinicios al actualizar los controladores respaldados por archivos

Antes de Windows 10, todos los controladores en modo kernel estaban respaldados por el archivo de paginación del sistema. Como resultado, un archivo binario del controlador se podría sobrescribir en el disco incluso mientras se estaba ejecutando el controlador.

Para mejorar el rendimiento, a partir de Windows 10, la mayoría de los controladores que no son de arranque están respaldados por el binario del controlador en el disco.

Los tipos de inicio del controlador que ahora están respaldados por archivos incluyen:

  • SERVICE_SYSTEM_START (0x00000001)

  • SERVICE_AUTO_START (0x00000002)

  • SERVICE_DEMAND_START (0x00000003)

Los controladores de inicio de arranque siguen siendo respaldados por el archivo de paginación.

Para actualizar un controlador respaldado por archivos, use los procedimientos recomendados siguientes. De lo contrario, la actualización podría requerir dos reinicios, uno para reemplazar el archivo y un segundo para cargar la nueva versión del controlador.

Si usa un archivo INF, siga estos pasos:

  1. Modifique la sección CopyFiles del archivo INF del controlador para usar COPYFLG_IN_USE_RENAME, como se indica a continuación:

    [MyDriver_Install.NT]
    CopyFiles=MyDriverCopy
    
    [MyDriverCopy]
    MyDriver.sys,,,0x00004000  ; COPYFLG_IN_USE_RENAME
    

    Si usa esta marca, Windows intenta reemplazar el archivo de controlador en el disco. Para obtener más información, consulta Inf CopyFiles (Directiva) de INF.

  2. Si el INF es para un controlador PnP, durante la instalación del dispositivo Windows intenta descargar el controlador en ejecución y reiniciar los dispositivos que lo usan, con el fin de recoger la nueva versión del controlador. Si se produce un error, la instalación del dispositivo indica que se debe reiniciar el sistema.

  3. Si inf no es para un controlador PnP y usa un método como InstallHInfSection para procesar el INF, detenga y reinicie manualmente el controlador:

    • Cierre todos los identificadores abiertos en el controlador y detenga el controlador mediante uno de los métodos siguientes:

      • sc.exe stop <mydriver>

      • ControlService(SERVICE_CONTROL_STOP)

      Para obtener más información, vea Función ControlService.

Si no usa un archivo INF, siga estos pasos:

  1. Detenga el controlador, como se ha descrito anteriormente. Reemplace el archivo binario del controlador anterior por el nuevo.

  2. Si no puede detener el controlador, cambie el nombre del archivo existente, copie el nuevo archivo en su lugar y configure el archivo existente para que se elimine en el futuro (por ejemplo, mediante MoveFileEx con la marca MOVEFILE_DELAY_UNTIL_REBOOT ). Para empezar a usar la nueva versión del controlador, el sistema deberá reiniciarse.

Secciones con copia de seguridad de archivos y con copia de seguridad de archivos de página

Qué determina cuándo se carga un controlador