DIFx 指南

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

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

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

  • 如果驱动程序包仅指定 Windows 8.1 或更高版本的 TargetOSVersion 值,则由于 DIFxApp 对 GetVersionEx 的依赖,因此无法使用 DIFxApp MSI 自定义操作(Difxapp.dll以及Difxappa.dll),这是从 Windows 8.1 开始更改的 API。 TargetOSVersionINF 制造商部分指定。 DIFxApp 公开 MSI 自定义操作,例如 MsiProcessDrivers、MsiInstallDrivers 和 MsiUninstallDrivers。 如果驱动程序包指定 Windows 8.1 或更高版本的 TargetOSVersion 值,则无法在 MSI 中使用这些自定义操作。

  • 从 Windows 8.1 开始,链接到 Difxapi.dll 的应用程序必须包含面向应用程序要在其中运行的 OS 版本的应用清单。 此要求是由于 DIFxAPI 依赖于 GetVersionEx(从 Windows 8.1 开始更改的 API)。 有关 Windows 8.1 中 GetVersionEx 的更改的详细信息,请参阅面向 Windows 的应用程序。

  • 如果驱动程序包使用 TargetOSVersionBuildNumber 部分(在 Windows 10 版本 1607(内部版本 14310 及更高版本中引入),则不能将 DIFx 工具用于该驱动程序包。 DIFx 工具不支持 BuildNumber 目标。

  • 使用 DIFx 版本 2.1,该版本可通过 Windows 10 版本 1511 WDK 在 Windows 7 WDK 中使用。 尽管 WDK 的早期版本中提供了 2.1 的 DIFx 版本,但它与 Windows 7 及更高版本的 Windows 不兼容。

  • 较旧的 WDK 仅包含 X86 和 amd64 版本的 DIFx 二进制文件。 DIFx 二进制文件不适用于其他体系结构。

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

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

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