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或更高版本,则不能使用 DIFxApp MSI 自定义操作 (
Difxapp.dll
和Difxappa.dll
) ,因为 DIFxApp 依赖于 GetVersionEx(从 Windows 8.1 开始更改的 API)。 TargetOSVersion 在 INF 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,请考虑切换到 DiInstallDriver 和 DiUninstallDriver。
如果仍需要自定义安装程序来安装驱动程序包,请使用 PnPUtil 命令行工具或调用 驱动程序安装函数的自定义安装程序。
同样,如果需要自定义安装程序来卸载驱动程序包,请使用 PnPUtil 或调用 DiUninstallDriver 或 SetupUninstallOEMInf 的自定义安装程序。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈