Share via


DIFx 指導方針

從 Windows 10 版本 1607 (Redstone 1) 開始,驅動程式安裝架構 (DIFx) 工具 (Difxapi.dllDifxapp.dllDifxappa.dllDPInst.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 製造商區段中指定。 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 應用程式為目標。
  • 如果您的驅動程式套件使用 Windows 10 1607 版 (組建 14310 和更新版本) ) 中引進的 TargetOSVersion (BuildNumber部分,則您無法使用該驅動程式套件的 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,請考慮切換至 DiInstallDriverDiUninstallDriver

如果您仍然需要自訂安裝程式來安裝驅動程式套件,請使用 PnPUtil 命令列工具或呼叫 驅動程式安裝函式的自訂安裝程式。

同樣地,如果您需要自訂安裝程式來卸載驅動程式套件,請使用 PnPUtil 或呼叫 DiUninstallDriverSetupUninstallOEMInf的自訂安裝程式。