DIFx 指南

从 Windows 10 版本 1607 (Redstone 1) 开始,驱动程序安装框架 (DIFx) 工具 (Difxapi.dllDifxapp.dllDifxappa.dllDPInst.exe) 已弃用,不再包含在 WDK 中。

相反,我们建议将 驱动程序包 作为不需要安装程序的独立驱动程序包提供。 这是一个独立包,它添加它正常运行所需的自己的设置或配置,而不是依赖于安装程序来修改驱动程序包可能依赖的系统状态。 需要独立驱动程序包才能支持驱动程序包方案,例如通过Windows 更新分发驱动程序包以及将驱动程序包添加到脱机映像。 建议发布独立的驱动程序包,以便通过Windows 更新交付到硬件插入的系统。 在 Windows 更新 上发布驱动程序包的第一步是将驱动程序包提交到 Windows 硬件开发人员中心

如果仍然选择使用 DIFx,则必须使用较旧的 WDK 来获取正确的工具。 以下注意事项适用:

  • 如果驱动程序包仅指定 targetOSVersion 值Windows 8.1或更高版本,则不能使用 DIFxApp MSI 自定义操作 (Difxapp.dllDifxappa.dll) ,因为 DIFxApp 依赖于 GetVersionEx(从 Windows 8.1 开始更改的 API)。 TargetOSVersionINF Manufacturer 节中指定。 DIFxApp 公开 MSI 自定义操作,例如 MsiProcessDrivers、MsiInstallDrivers 和 MsiUninstallDrivers。 如果驱动程序包将 TargetOSVersion 值指定为 Windows 8.1 或更高版本,则无法在 MSI 中使用这些自定义操作。
  • 从 Windows 8.1 开始,链接到 Difxapi.dll 的应用程序必须包含面向要运行应用程序的 OS 版本的应用清单。 这是由于 DIFxAPI 对 GetVersionEx 的依赖,GetVersionEx 是一种从 Windows 8.1 开始更改的 API。 有关 Windows 8.1 中对 GetVersionEx 的更改的详细信息,请参阅面向 Windows 的应用程序
  • 如果驱动程序包使用 Windows 10 版本 1607 (内部版本 14310 及更高版本) ) 中引入的 TargetOSVersion (BuildNumber 部分,则不能将该驱动程序包结合使用 DIFx 工具。 DIFx 工具不支持 BuildNumber 目标。
  • 使用 DIFx 版本 2.1,该版本在 Windows 7 WDK 中通过 Windows 10 版本 1511 WDK 提供。 尽管早期版本的 WDK 中提供了 DIFx 版本 2.1,但它与 Windows 7 及更高版本的 Windows 不兼容。
  • 较旧的 WDK 仅包含 DIFx 二进制文件的 x86 和 amd64 版本。 DIFx 二进制文件不适用于其他体系结构。

尽管不再更新,但可以在 Difxapi.h 中找到 DIFx 的 API 参考文档。 如果使用 DriverPackagePreinstall、DriverPackageInstall 和 DriverPackageUninstall API,请考虑切换到 DiInstallDriverDiUninstallDriver

如果仍需要自定义安装程序来安装驱动程序包,请使用 PnPUtil 命令行工具或调用 驱动程序安装函数的自定义安装程序。

同样,如果需要自定义安装程序来卸载驱动程序包,请使用 PnPUtil 或调用 DiUninstallDriverSetupUninstallOEMInf 的自定义安装程序。