DIFx 指導方針
從 Windows 10 版本 1607 開始,驅動程式安裝架構 (DIFx) 工具 (Difxapi.dll
、 Difxapp.dll
Difxappa.dll
、 和 DPInst.exe
) 已被取代,且不再包含在 WDK 中。
相反地,我們建議提供 作為不需要安裝程序的獨立 驅動程式套件 。 此獨立套件會新增自己的設定或組態,使其必須正常運作。 獨立驅動程式套件並不依賴安裝程式來修改驅動程式套件可能需要的系統狀態。 需要獨立驅動程式套件,才能支援透過 Windows Update 散發驅動程式套件,並將驅動程式套件新增至離線映像。 建議您發佈獨立驅動程式套件,以透過 Windows Update 傳遞至您硬體所插入的系統。 在 Windows Update 上發佈驅動程式套件的第一個步驟是將您的驅動程式套件提交至 Windows 硬體開發人員中心。
如果您選擇無論如何都使用 DIFx,您必須使用較舊的 WDK 來取得正確的工具。 下列注意事項適用:
如果您的驅動程式套件只 指定 Windows 8.1 或更新版本的 TargetOSVersion 值,您就無法使用 DIFxApp MSI 自定義動作 (
Difxapp.dll
和Difxappa.dll
), 因為 DIFxApp 相 依於 GetVersionEx,這是從 Windows 8.1 開始變更的 API。 TargetOSVersion 是在 INF Manufacturer 區段中指定。 DIFxApp 會公開 MSI 自定義動作,例如 MsiProcessDrivers、MsiInstallDrivers 和 MsiUninstallDrivers。 如果您的驅動程式套件指定 Windows 8.1 或更新版本的 TargetOSVersion 值,則無法在 MSI 中使用這些自定義動作。從 Windows 8.1 開始,連結的應用程式
Difxapi.dll
必須包含應用程式指令清單,以應用程式要執行之作業系統版本為目標。 這項需求是由於 DIFxAPI 相 依於 GetVersionEx,這是從 Windows 8.1 開始變更的 API。 如需有關 Windows 8.1 中 GetVersionEx 變更的詳細資訊,請參閱以 Windows 應用程式為目標。如果您的驅動程式套件使用 TargetOSVersion 的 BuildNumber 部分(在 Windows 10 版本 1607(組建 14310 和更新版本)中引進),則您無法使用該驅動程式套件的 DIFx 工具。 DIFx 工具不支援 BuildNumber 目標。
使用 DIFx 2.1 版,可在 Windows 7 WDK 中透過 Windows 10 版本 1511 WDK 取得。 雖然舊版 WDK 中提供 2.1 版的 DIFx,但它與 Windows 7 和更新版本的 Windows 不相容。
較舊的 WDK 只包含 x86 和 amd64 版本的 DIFx 二進位檔。 DIFx 二進位檔不適用於其他架構。
雖然它不再更新,但您可以在 Difxapi.h 找到 DIFx 的 API 參考檔。 如果您使用 DriverPackagePreinstall、DriverPackageInstall 和 DriverPackageUninstall API,請考慮切換至 DiInstallDriver 和 DiUninstallDriver。
如果您仍然需要自訂安裝程式來安裝驅動程式套件,請使用 PnPUtil 命令行工具或呼叫 驅動程式安裝函式的自訂安裝程式。
同樣地,如果您需要自定義安裝程式來卸載驅動程式套件,請使用 PnPUtil 或呼叫 DiUninstallDriver 或 SetupUninstallOEMInf 的自定義安裝程式。