Compartir a través de


Depuración de un Co-Installer de instalación de dispositivos

Algunos paquetes de instalación de dispositivos de hardware incluyen archivos DLL conocidos como coinstaladores, que ayudan a instalar el dispositivo.

No se puede depurar un co-instalador de la misma manera que otros módulos. Esto se debe a la manera única en que se carga un coinstalador y, dado que muchos escenarios de instalación se producen automáticamente sin proporcionar al desarrollador la oportunidad de interrumpir el proceso en ejecución.

Para resolver este problema, instale el dispositivo mediante programación. Adjuntar un depurador a la aplicación que instala el dispositivo permite el acceso al propio instalador. La manera más sencilla de hacerlo es instalar o reinstalar el dispositivo mediante la herramienta DevCon que se incluye en el Kit de controladores de Windows (WDK). Después, puede depurar el co-instalador con WinDbg.

Use el procedimiento siguiente para realizar esta tarea. En este procedimiento se supone que ha desarrollado un paquete de instalación de controladores de trabajo para el dispositivo que usa un coinstaladores. También se supone que tiene la copia más reciente del WDK. Para obtener información sobre el desarrollo de controladores, paquetes de instalación de controladores y coinstaladores de instalación de controladores, consulte la documentación de WDK.

Depuración de un co-instalador mediante DevCon y WinDbg

  1. Conecte el dispositivo de hardware.

  2. Cancele el Asistente para nuevo hardware encontrado .

  3. Inicie WinDbg.

  4. Seleccione Abrir ejecutable en el menú Archivo de WinDbg.

  5. En el cuadro de diálogo Abrir ejecutable , haga lo siguiente:

    1. En el cuadro de texto de selección de archivos, seleccione la herramienta DevCon (Devcon.exe). Para ello, vaya a la carpeta de instalación de WDK, abra las herramientas del subdirectorio y, a continuación, abra el subdirectorio devcon, abra el subdirectorio que coincida con la arquitectura del procesador de la máquina y, a continuación, seleccione Devcon.exe. Haga clic solo una vez en Devcon.exe y aún no presione Abrir.

    2. En el cuadro de texto Argumentos , escriba el texto siguiente, donde INFFile es el nombre de archivo del archivo de información de instalación de dispositivos (INF) y HardwareID es el identificador de hardware del dispositivo:

      update INFFile HardwareID 
      
    3. En el cuadro de texto Start directory (Directorio de inicio ), escriba la ruta de acceso al paquete de instalación del dispositivo.

    4. Haga clic en Abrir.

  6. Se iniciará el proceso de depuración y WinDbg se dividirá en el proceso de DevCon antes de que DevCon instale el controlador.

  7. Configure el depurador para que se interrumpa en el proceso del co-instalador cuando se cargue. Puede hacerlo mediante cualquiera de los métodos siguientes:

    • En la ventana Comando del depurador, use el comando sxe (Establecer excepciones) seguido de ld: y, a continuación, el nombre de archivo del co-instalador, excepto la extensión de archivo. No debería haber espacio después de los dos puntos Por ejemplo, si el nombre del co-instalador es mycoinst.dll, usaría el siguiente comando:

      sxe ld:mycoinst 
      
    • Seleccione Filtros de eventos en el menú Depurar de WinDbg. En el cuadro de diálogo Filtros de eventos, seleccione Cargar módulo. En Ejecución, seleccione Habilitado. En Continuar, seleccione No controlado. Haga clic en el botón Argumento y, en el cuadro de texto, escriba el nombre de archivo del co-instalador, excepto la extensión de archivo (por ejemplo, escriba "mycoinst" para mycoinst.dll). Haga clic en Aceptar y, a continuación, haga clic en Cerrar.

  8. Reanude la ejecución presionando F5 o escribiendo el comando g (Go) en la ventana Comando del depurador.

  9. Cuando se cargue el co-instalador, la ejecución se interrumpirá en el depurador. En este momento, puede establecer los puntos de interrupción adicionales que necesite.

Limitaciones de este procedimiento

En algunos casos, la ejecución de un paquete de instalación de dispositivos en DevCon puede dar lugar a un comportamiento ligeramente diferente al de una instalación de PnP, debido a diferentes tokens de seguridad y similares. Si está intentando depurar un problema específico en el co-instalador, es posible que este problema no se replique si DevCon está implicado. Por lo tanto, antes de usar esta técnica, debe usar DevCon para instalar el controlador sin un depurador asociado para comprobar que este problema existe en los escenarios PnP y DevCon.

Si el problema desaparece cada vez que DevCon inicia la instalación, tendrá que depurar el co-instalador sin usar DevCon. Una manera de hacerlo es usar la herramienta TList con la opción /m para determinar qué proceso está cargando el módulo co-instalador y, a continuación, adjuntar el depurador a ese proceso.