Diretrizes do DIFx

A partir do Windows 10 versão 1607 (Redstone 1), as ferramentas do DIFx (Driver Install Frameworks) (Difxapi.dll, Difxapp.dll, Difxappa.dlle DPInst.exe) foram preteridas e não estão mais incluídas no WDK.

Em vez disso, recomendamos fornecer seu pacote de driver como um pacote de driver autônomo que não requer um instalador. Esse é um pacote autossuficiente que adiciona suas próprias configurações ou configurações de que precisa para funcionar corretamente, em vez de depender de um instalador para modificar o estado do sistema do qual o pacote de driver pode depender. Pacotes de driver autônomos são necessários para dar suporte a cenários de pacote de driver, como distribuir o pacote de driver por meio de Windows Update e adicionar o pacote de driver a uma imagem offline. É recomendável publicar um pacote de driver autônomo a ser entregue por meio de Windows Update para sistemas nos quais seu hardware está conectado. A primeira etapa para publicar o pacote de driver no Windows Update é enviar seu pacote de driver para o Centro de Desenvolvimento de Hardware do Windows.

Se você optar por usar o DIFx de qualquer maneira, deverá usar um WDK mais antigo para obter as ferramentas certas. As seguintes advertências se aplicam:

  • Se o pacote de driver especificar apenas valores TargetOSVersion de Windows 8.1 ou posterior, você não poderá usar a ação personalizada DO DIFxApp MSI (Difxapp.dll e Difxappa.dll) devido à dependência do DIFxApp em GetVersionEx, uma API que foi alterada a partir do Windows 8.1. TargetOSVersion é especificado na Seção Fabricante do INF. O DIFxApp expõe ações personalizadas do MSI, como MsiProcessDrivers, MsiInstallDrivers e MsiUninstallDrivers. Se o pacote de driver especificar valores TargetOSVersion de Windows 8.1 ou posterior, você não poderá usar essas ações personalizadas em sua MSI.
  • A partir do Windows 8.1, os aplicativos aos quais o link se Difxapi.dll vincula devem conter um manifesto do aplicativo direcionado à versão do sistema operacional na qual o aplicativo se destina a ser executado. Isso ocorre devido à dependência do DIFxAPI no GetVersionEx, uma API que foi alterada a partir do Windows 8.1. Para obter mais informações sobre as alterações em GetVersionEx no Windows 8.1, consulte Direcionando seu aplicativo para Windows.
  • Se o pacote de driver usar a parte BuildNumber de TargetOSVersion (introduzida no Windows 10, versão 1607 (Build 14310 e posterior), você não poderá usar as ferramentas DIFx com esse pacote de driver. As ferramentas DIFx não dão suporte ao direcionamento BuildNumber.
  • Use o DIFx versão 2.1, que está disponível no WDK do Windows 7 por meio do WDK do Windows 10 versão 1511. Embora uma versão DIFx da 2.1 estivesse disponível em versões anteriores do WDK, ela não era compatível com o Windows 7 e versões posteriores do Windows.
  • Os WDKs mais antigos contêm apenas versões x86 e amd64 dos binários DIFx. Os binários DIFx não estão disponíveis para outras arquiteturas.

Embora ele não esteja mais sendo atualizado, você pode encontrar a documentação de referência da API para DIFx em Difxapi.h. Se você estiver usando as APIs DriverPackagePreinstall, DriverPackageInstall e DriverPackageUninstall, considere alternar para DiInstallDriver e DiUninstallDriver.

Se você ainda precisar de um instalador personalizado para instalar o pacote de driver, use a ferramenta de linha de comando PnPUtil ou um instalador personalizado que chama as funções de instalação do driver.

Da mesma forma, se você precisar do instalador personalizado para desinstalar o pacote de driver, use PnPUtil ou um instalador personalizado que chame DiUninstallDriver ou SetupUninstallOEMInf.