Поделиться через


Рекомендации по DIFx

Начиная с Windows 10 версии 1607 (Redstone 1), средства установки драйверов (DIFx) (Difxapi.dll, Difxapp.dll, Difxappa.dllи DPInst.exe) являются устаревшими и больше не входят в состав WDK.

Вместо этого мы рекомендуем предоставить пакет драйверов в качестве автономного пакета драйверов, для которых не требуется установщик. Это автономный пакет, который добавляет собственные параметры или конфигурацию, необходимые для правильной работы, а не зависит от установщика для изменения состояния системы, от котором может зависеть пакет драйверов. Автономные пакеты драйверов необходимы для поддержки таких сценариев, как распространение пакета драйвера через клиентский компонент Центра обновления Windows и добавление пакета драйвера в автономный образ. Мы рекомендуем опубликовать автономный пакет драйверов для доставки через клиентский компонент Центра обновления Windows в системы, к которым подключено оборудование. Первым шагом к публикации пакета драйверов на клиентский компонент Центра обновления Windows является отправка пакета драйверов в Центр разработки оборудования для Windows.

Если вы в любом случае решите использовать DIFx, необходимо использовать старый WDK, чтобы получить правильные инструменты. Действуют следующие предостережения:

  • Если пакет драйвера задает только значения TargetOSVersion Windows 8.1 или более поздней версии, вы не сможете использовать настраиваемое действие MSI DIFxApp (Difxapp.dll и Difxappa.dll) из-за зависимости DIFxApp от GetVersionEx, API, который изменился начиная с Windows 8.1. TargetOSVersion указывается в разделе производителя INF. DIFxApp предоставляет пользовательские действия MSI, такие как MsiProcessDrivers, MsiInstallDrivers и MsiUninstallDrivers. Если в пакете драйвера указаны значения TargetOSVersion Windows 8.1 или более поздней версии, эти пользовательские действия нельзя использовать в MSI.
  • Начиная с Windows 8.1, приложения, которые ссылаются Difxapi.dll на , должны содержать манифест приложения, предназначенный для версии ОС, в которой предназначено приложение. Это связано с зависимостью DIFxAPI от GetVersionEx, API, который изменился, начиная с Windows 8.1. Дополнительные сведения об изменениях в GetVersionEx в Windows 8.1 см. в статье Назначение приложения для Windows.
  • Если в пакете драйвера используется часть BuildNumbertargetOSVersion (представленная в Windows 10 версии 1607 (сборка 14310 и более поздние версии), средства DIFx нельзя использовать с этим пакетом драйверов. Средства DIFx не поддерживают нацеливание buildNumber.
  • Используйте DIFx версии 2.1, которая доступна в Windows 7 WDK через Windows 10 версии 1511 WDK. Хотя DIFx-версия 2.1 была доступна в более ранних версиях WDK, она была несовместима с Windows 7 и более поздними версиями Windows.
  • Более старые пакеты WDK содержат только двоичные файлы DIFx для x86 и amd64. Двоичные файлы DIFx недоступны для других архитектур.

Хотя он больше не обновляется, справочную документацию по API для DIFx можно найти на сайте Difxapi.h. Если вы используете API DriverPackagePreinstall, DriverPackageInstall и DriverPackageUninstall, рассмотрите возможность перехода на DiInstallDriver и DiUninstallDriver.

Если для установки пакета драйверов вам по-прежнему нужен пользовательский установщик, используйте программу командной строки PnPUtil или пользовательский установщик, который вызывает функции установки драйверов.

Аналогичным образом, если требуется пользовательский установщик для удаления пакета драйверов, используйте PnPUtil или пользовательский установщик, который вызывает DiUninstallDriver или SetupUninstallOEMInf.