Remover co-instaladores dos pacotes de drivers
Atenção
A partir de janeiro de 2023, os pacotes de driver contendo um co-instalador deixaram de ser assinados pelo portal 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 as razões comuns para os coinstaladores estarem presentes em um pacote de driver e oferece mecanismos para executar a mesma tarefa sem um coinstalador.
Coinstaladores 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 WinUSB podem ser removidas e o WinUSB deve ser referenciado do pacote de driver INF usando as diretivas Include e Needs.
Orientações para o pacote de drivers WinUSB
Instalação de software que apresenta interface de utilizador
Em vez de iniciar uma aplicação durante a instalação, forneça uma aplicação da Plataforma Universal do Windows instalada usando uma diretiva AddSoftware de uma secção DDInstall.Software do pacote de controladores INF.
Para obter mais informações, consulte Emparelhar um driver com um aplicativo da Plataforma Universal do Windows (UWP). Uma diretiva AddSoftware é suportada no Windows 10, versão 1703 e versões posteriores do Windows.
Para obter detalhes adicionais, consulte Instalando o software associado abaixo.
Definir nomes amigáveis para dispositivos
Ficheiro 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"
Tempo de execução
O nome amigável pode ser definido pelo driver durante o Start IRP ou a fase PrepareHardware, definindo a propriedade do DEVPKEY_Device_FriendlyName com uma das seguintes APIs:
- IoSetDevicePropertyData
- WdfAssignProperty
Outras definições/configurações do dispositivo
Quando possível, o driver pode alterar as configurações e a configuração do dispositivo dentro do driver na fase Iniciar IRP ou na 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 configuração de driver e 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 configurações que não podem ser definidas dentro do próprio driver, um pacote de driver pode também incluir componentes de runtime em modo de utilizador que alteram essas configurações. 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 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 equipamentos relevantes estiverem conectados, consulte Disparadores de Serviços, Serviços Win32 que interagem com dispositivose Registro de notificações de interfaces de dispositivos. O serviço também deve atender aos requisitos mais recentes, por exemplo, passar pelo Validador de API.
Instalação do Software Associado
A parte 'Componentizada' dos requisitos de driver DCH introduziu um conceito chamado SoftwareComponent, que é um mecanismo para dissociar a instalação de um driver de dispositivo de seu software associado. Quando um componente de software é criado pelo INF, ele cria automaticamente um dispositivo filho que estabelece uma correspondência com o componente de software. Este dispositivo filho existirá para 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 é usar uma diretiva AddSoftware. Isso acionará o download e a instalação de software da Windows Store.
- Componente de Software
- AddSoftware
- Exemplo de pacote de driver DCH
- Emparelhar um driver com uma aplicação UWP
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 início de encomenda.
Para dispositivos enumerados pelo ACPI, o objeto de dependência (_DEP) pode ser usado no firmware ACPI para impor a ordem de inicialização do dispositivo. Para obter mais informações, consulte Device Management Namespace.
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 à API de instalação de 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 não é garantido que os pacotes de driver referenciados por CopyInf sejam instalados em qualquer ordem específica.
Configurando componentes de vários fornecedores incluídos em um único pacote de driver
Os pacotes de driver suportam 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 a instalação de um driver, um único pacote de driver base INF é selecionado usando a classificação de driver para fornecer a funcionalidade para o dispositivo, seguido pela seleção de quaisquer extensões INF para o dispositivo. Para obter mais informações, consulte Usando um arquivo INF de extensão.
Um paradigma comum para a utilização de 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 personaliza para esse sistema.
Instalação/orquestração de 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 UEFI Firmware Update Platform.
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 Custom Firmware Updating Driver.