Compartilhar via


Removendo co-instaladores de pacotes de drivers

Cuidado

A partir de janeiro de 2023, os pacotes de drivers que contenham um coinstalador não serão mais assinados pelo portal da Central do Desenvolvedor para Hardware. Para obter detalhes sobre esse 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 os motivos comuns para que os co-instaladores estejam presentes em um pacote de driver e oferece mecanismos para executar a mesma tarefa sem um co-instalador.

Co-instaladores do WDF e do WinUSB

O co-instalador do WDF e o co-instalador do WinUSB não são necessários em nenhum sistema que execute o Windows 10 e posterior. As referências ao coinstalador do WDF podem ser removidas sem nenhum trabalho adicional. As referências ao coinstalador do WinUSB podem ser removidas, e o WinUSB deve ser mencionado no INF do pacote de drivers empregando as diretivas "Include" e "Needs".

Diretrizes do pacote de drivers WinUSB

Instalando software que apresenta a interface do usuário

Em vez de iniciar um aplicativo durante uma instalação, disponibilize um aplicativo da Plataforma Universal do Windows que seja instalado utilizando uma diretiva AddSoftware a partir de uma seção DDInstall.Software do INF do pacote de drivers.

Para obter mais informações, consulte Emparelhamento de um driver com um aplicativo UWP (Plataforma Universal do Windows). Uma diretiva AddSoftware tem suporte no Windows 10, versão 1703 e versões posteriores do Windows.

Para obter mais detalhes, consulte Instalação de software associado, abaixo.

Definindo nomes amigáveis do dispositivo

Arquivo INF

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

[DDInstall.HW]
AddReg = FriendlyName_AddReg

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

Tempo de execução

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

Outras configurações/ajustes de dispositivo

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

Para ajustes e configurações que não podem ser definidos dentro do próprio driver, um pacote de driver também pode incluir componentes de tempo de execução no modo de usuário que alteram os ajustes e a configuração. 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 em 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, verifique se sua funcionalidade é necessária e não pode 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 seja executado somente quando dispositivos relevantes estiverem conectados, consulte Disparadores de Serviço, serviços Win32 interagindo com dispositivose Registro para notificações da interface do dispositivo. O serviço também deve atender aos requisitos mais recentes, por exemplo, passar pelo validador de API .

Instalando software associado

A parte 'componentizada' dos requisitos de driver de DCH introduziu um conceito denominado SoftwareComponent, que é um mecanismo de desacoplamento da instalação de um driver de dispositivo do respectivo software associado. Quando um componente de software é criado pelo INF, ele cria automaticamente um dispositivo filho que é mapeado para o componente de software. Esse dispositivo filho existirá para instalar o software associado ao dispositivo pai. Esse software pode ser instalado e atualizado independentemente do dispositivo principal e do driver.

Em um pacote de driver do SoftwareComponent INF, o mecanismo recomendado para instalar o software é usar uma diretiva AddSoftware. Isso disparará o download e a instalação de software da Windows Store.

Dependências entre drivers e dispositivos

Dependências de ordem na inicialização/enumeração de dispositivos

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

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

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

Dependências de instalação de pacotes de drivers

A diretiva CopyInf pode ser utilizada para instalar também um pacote de drivers 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 pelo CopyInf não têm garantia de serem instalados em nenhuma ordem específica.

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

Os pacotes de drivers são compatíveis com um tipo de INF de pacote de drivers denominado INF de extensão. Esse é um arquivo INF projetado especificamente para aumentar e ampliar a funcionalidade de um INF "de base" do pacote de drivers. Uma extensão pode não fornecer o driver de função para o dispositivo, mas pode usar outras diretivas ou gravar outras configurações para um dispositivo. Durante a instalação de um driver, um INF de base individual do pacote de drivers é selecionado utilizando a classificação do driver para proporcionar funcionalidade ao dispositivo; depois qualquer INF de extensão é selecionado para o dispositivo. Para obter mais informações, consulte Usar um arquivo INF de extensão.

Um paradigma comum para a utilização de INFs de extensão de pacotes de drivers é que o fabricante de hardware forneça o INF de base do pacote de drivers, e que um OEM, que fornece essa peça dentro de um sistema, crie um INF de extensão do pacote de drivers que o personalize para aquele 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 uma das opções a seguir pode ser usada para enviar e instalar uma atualização de firmware por meio do 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 mais informações, consulte a Plataforma de Atualização de Firmware da UEFI .

Removível

Para dispositivos removíveis, como dispositivos HID ou USB, o modelo CFU permite atualizações seguras de firmware. Para obter mais informações, consulte a Atualização de Firmware de 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.