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


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

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

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

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

  • Если пакет драйвера задает только значения TargetOSVersion Windows 8.1 или более поздней версии, вы не можете использовать настраиваемое действие DIFxApp MSI (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, который изменился начиная с Windows 8.1. Дополнительные сведения об изменениях GetVersionEx в Windows 8.1 см. в статье "Назначение приложения для Windows".

  • Если пакет драйвера использует часть BuildNumber TargetOSVersion (представленная в Windows 10 версии 1607 (сборка 14310 и более поздняя)), вы не можете использовать средства DIFx с этим пакетом драйверов. Средства DIFx не поддерживают целевые объекты BuildNumber.

  • Используйте DIFx версии 2.1, которая доступна в Windows 7 WDK с помощью Windows 10 версии 1511 WDK. Хотя версия DIFx версии 2.1 была доступна в более ранних версиях WDK, она не совместима с Windows 7 и более поздними версиями Windows.

  • Старые WDKs содержат только версии x86 и amd64 двоичных файлов DIFx. Двоичные файлы DIFx недоступны для других архитектур.

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

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

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