Removendo co-instaladores de pacotes de driver

Cuidado

A partir de janeiro de 2023, os pacotes de driver que contêm um coinstalador não são mais assinados pelo portal do Hardware Developer Center. Para obter detalhes sobre o requisito, consulte Especificações e Políticas do Programa de Compatibilidade de Hardware do Windows, especificamente as políticas da versão 22H2, seção Device.DevFund.INF.Declarative.

Esta página aborda razões comuns para co-instaladores estarem presentes em um pacote de driver e oferece mecanismos para executar a mesma tarefa sem um co-instalador.

Co-instaladores WDF e WinUSB

O coinstalador WDF e o coinstalador WinUSB não são necessários em nenhum sistema que execute o Windows 10 e posterior. As referências do coinstalador WDF podem ser removidas sem qualquer trabalho adicional. As referências do coinstalador do WinUSB podem ser removidas e o WinUSB deve ser referenciado do INF do pacote de driver usando as diretivas Include e Needs.

Orientação do pacote de driver WinUSB

Instalando software que apresenta interface do usuário

Em vez de iniciar um aplicativo durante uma instalação, forneça um aplicativo da Plataforma Universal do Windows que é instalado usando uma diretiva AddSoftware de uma seção DDInstall.Software do pacote de driver INF.

Para obter mais informações, consulte Emparelhando um driver com um aplicativo da Plataforma Universal do Windows (UWP). Há suporte para uma diretiva AddSoftware no Windows 10, versão 1703 e versões posteriores do Windows.

Para obter detalhes adicionais, consulte Instalando o software associado abaixo.

Definindo nomes amigáveis do dispositivo

Arquivo INF

Um pacote de driver INF pode definir o nome amigável do dispositivo da seguinte maneira:

[DDInstall.HW]
AddReg = FriendlyName_AddReg

[FriendlyName_AddReg]
HKR,,FriendlyName,, "Device Friendly Name"

Runtime

O nome amigável pode ser definido pelo driver durante a fase Start IRP ou PrepareHardware definindo a propriedade DEVPKEY_Device_FriendlyName com uma das seguintes APIs:

Outras configurações/configurações do dispositivo:

Quando possível, o driver pode alterar as configurações e as configurações do dispositivo dentro do driver Start IRP ou da fase PrepareHardware . Ao modificar o estado em tempo de execução, o driver deve seguir os requisitos de isolamento do pacote de driver. Esses requisitos contêm a orientação sobre a configuração do driver e o layout do estado e ajudam a preparar o driver para o futuro, tornando-o mais resistente a alterações externas, mais fácil de atualizar e mais simples de instalar.

Para definições e configurações que não podem ser definidas dentro do próprio driver, um pacote de driver também pode incluir componentes de tempo de execução de modo de usuário que alteram as definições e a configuração. Isso pode ser um aplicativo voltado para o usuário ou um serviço Win32 que atualiza a configuração. Para obter informações sobre como incluir software de modo de usuário para uso com um dispositivo, consulte Usando um arquivo INF de componente.

Se um componente persistente, como um serviço, for usado, certifique-se de que sua funcionalidade seja necessária e não possa ser executada de maneira menos intensiva em recursos, como dentro de um pacote de driver INF ou dentro do próprio driver. Para obter informações sobre como garantir que um serviço só seja executado quando dispositivos relevantes estiverem conectados, consulte Gatilhos de serviço, Serviços Win32 interagindo com dispositivos e Registrando notificações de interface de dispositivo. O serviço também deve atender aos requisitos mais recentes, por exemplo, passar no API Validator.

Instalando o software associado

A parte 'Componentizada' dos requisitos do driver DCH introduziu um conceito chamado SoftwareComponent, que é um mecanismo para separar a instalação de um driver de dispositivo de seu software associado. Quando um componente de software é criado pelo INF, ele criará automaticamente um dispositivo filho que mapeia para o componente de software. Esse dispositivo filho existirá com a finalidade de instalar o software associado ao dispositivo pai. Este software pode ser instalado e atualizado independentemente do dispositivo principal e driver.

Dentro de um pacote de driver SoftwareComponent INF, o mecanismo recomendado para instalar o software está usando uma diretiva AddSoftware. Isso acionará o download e a instalação de software da Windows Store.

Dependências entre drivers e dispositivos

Dependências de ordem de início/enumeração de dispositivos

Na medida do possível, devem ser evitadas dependências entre dispositivos ou requisitos de ordenação inicial.

Para dispositivos enumerados ACPI, o objeto de dependência (_DEP) pode ser usado no firmware ACPI para impor a ordem de início do dispositivo. Para obter mais informações, consulte Namespace de gerenciamento de dispositivos.

Os drivers podem responder ao IRP IRP_MN_QUERY_DEVICE_RELATIONS para definir relações entre dispositivos, como relações de remoção. Para obter mais informações, consulte IRP_MN_QUERY_DEVICE_RELATIONS.

Dependências de instalação do pacote de driver

A diretiva CopyInf pode ser usada para também instalar um pacote de driver adicional durante a mesma chamada de API de instalação que outro driver. O pacote de driver passado para a API de instalação será instalado antes de qualquer pacote de driver referenciado por CopyInf, mas os pacotes de driver referenciados por CopyInf não têm garantia de serem instalados em qualquer ordem específica.

Configurando componentes de vários fornecedores empacotados em um único pacote de driver

Os pacotes de driver oferecem suporte a um tipo de pacote de driver INF chamado de extensão INF. Este é um arquivo INF que é projetado especificamente para aumentar e estender a funcionalidade de um pacote de driver "base" INF. Uma extensão pode não fornecer o driver de função para o dispositivo, mas pode usar quaisquer outras diretivas ou escrever outras configurações para um dispositivo. Durante uma instalação de driver, um único pacote de driver base INF é selecionado usando a classificação de driver para fornecer a funcionalidade para o dispositivo, em seguida, qualquer INFs de extensão é selecionado para o dispositivo. Para obter mais informações, consulte Usando um arquivo INF de extensão.

Um paradigma comum para utilizar INFs de pacote de driver de extensão é que o fabricante de hardware forneça o pacote de driver base INF e que um OEM envie essa parte dentro de um sistema para criar um pacote de driver de extensão INF que o personalize para esse sistema.

Instalando/orquestrando atualizações de firmware

Diferentes mecanismos de atualização de firmware são recomendados, dependendo da natureza do dispositivo que está sendo atualizado. Cada um dos itens a seguir pode ser usado para enviar e instalar uma atualização de firmware via Windows Update.

Não removível

A plataforma de atualização de firmware UEFI foi projetada para atualizar componentes de um sistema que não podem ser removidos, como o firmware do sistema. Para obter mais informações, consulte Plataforma de atualização de firmware UEFI.

Removível

Para dispositivos removíveis, como dispositivos HID ou USB, o modelo CFU permite atualizações de firmware seguras. Para obter mais informações, consulte Atualização de firmware do componente.

Implementação personalizada

Como alternativa, um driver personalizado pode ser escrito que atualiza o firmware do dispositivo a critério do driver. Para obter mais informações, consulte Driver de atualização de firmware personalizado.