Compartilhar via


Depurando um Co-Installer de instalação de dispositivo

Alguns pacotes de instalação de dispositivo de hardware incluem arquivos DLL conhecidos como co-instaladores, que auxiliam na instalação do dispositivo.

Você não pode depurar um co-instalador da mesma forma que outros módulos. Isso ocorre devido à maneira exclusiva pela qual um co-instalador é carregado e porque muitos cenários de instalação ocorrem automaticamente sem fornecer ao desenvolvedor a oportunidade de entrar no processo em execução.

Você pode resolve esse problema instalando programaticamente o dispositivo. Anexar um depurador ao aplicativo que instala o dispositivo permite o acesso ao próprio co-instalador. A maneira mais simples de fazer isso é instalar ou reinstalar o dispositivo usando a ferramenta DevCon incluída no WDK (Windows Driver Kit). Em seguida, você pode depurar o co-instalador com o WinDbg.

Use o procedimento a seguir para realizar essa tarefa. Este procedimento pressupõe que você desenvolveu um pacote de instalação de driver de trabalho para seu dispositivo que usa um co-instalador. Ele também pressupõe que você tenha a cópia mais recente do WDK. Para obter informações sobre como desenvolver drivers, pacotes de instalação de driver e co-instaladores de instalação do driver, consulte a documentação do WDK.

Depurando um co-instalador usando DevCon e WinDbg

  1. Conecte o dispositivo de hardware.

  2. Cancele o assistente Novo Hardware Encontrado .

  3. Inicie o WinDbg.

  4. Selecione Abrir Executável no menu Arquivo do WinDbg.

  5. Na caixa de diálogo Abrir Executável , faça o seguinte:

    1. Na caixa de texto seleção de arquivo, selecione a ferramenta DevCon (Devcon.exe). Para isso, navegue até a pasta de instalação do WDK, abra as ferramentas de subdiretório e abra o devcon subdiretório e abra o subdiretório que corresponde à arquitetura do processador do computador e selecione Devcon.exe. Clique apenas uma vez no Devcon.exe e ainda não pressione Abrir.

    2. Na caixa de texto Argumentos, insira o seguinte texto, em que INFFile é o nome do arquivo de informações de instalação do dispositivo (INF) e HardwareID é a ID de hardware do dispositivo:

      update INFFile HardwareID 
      
    3. Na caixa de texto Iniciar diretório , insira o caminho para o pacote de instalação do dispositivo.

    4. Clique em Abrir.

  6. O processo de depuração será iniciado e o WinDbg entrará no processo de DevCon antes que o DevCon instale o driver.

  7. Configure o depurador para invadir o processo de co-instalador quando ele for carregado. Você pode fazer isso por um dos seguintes métodos:

    • Na janela Comando do Depurador, use o comando sxe (Definir Exceções) seguido de ld: e, em seguida, o nome do co-instalador, excluindo a extensão de arquivo. Não deve haver espaço após os dois-pontos Por exemplo, se o nome do co-instalador for mycoinst.dll, você usará o seguinte comando:

      sxe ld:mycoinst 
      
    • Selecione Filtros de Eventos no menu Depurar do WinDbg. Na caixa de diálogo Filtros de Eventos , selecione Carregar módulo. Em Execução, selecione Habilitado. Em Continuar, selecione Não Tratado. Clique no botão Argumento e, na caixa de texto, insira o nome do co-instalador, excluindo a extensão de arquivo (por exemplo, insira "mycoinst" para mycoinst.dll). Clique em OK e em Fechar.

  8. Retome a execução pressionando F5 ou inserindo o comando g (Go) na janela Comando do Depurador.

  9. Quando o co-instalador for carregado, a execução será interrompida novamente no depurador. Neste ponto, você pode definir quaisquer pontos de interrupção adicionais necessários.

Limitações deste procedimento

Em determinados casos, a execução de um pacote de instalação do dispositivo em DevCon pode resultar em um comportamento ligeiramente diferente do de uma instalação PnP, devido a diferentes tokens de segurança e similares. Se você estiver tentando depurar um problema específico em seu co-instalador, é possível que esse problema não seja replicado se DevCon estiver envolvido. Portanto, antes de usar essa técnica, você deve usar o DevCon para instalar o driver sem um depurador anexado para verificar se esse problema existe nos cenários PnP e DevCon.

Se o problema desaparecer sempre que DevCon iniciar a instalação, você precisará depurar seu co-instalador sem usar o DevCon. Uma maneira de fazer isso é usar a ferramenta TList com a opção /m para determinar qual processo está carregando o módulo do co-instalador e anexando o depurador a esse processo.