DIFx のガイドライン

Windows 10 バージョン 1607 (Redstone 1) 以降では、ドライバー インストール フレームワーク (DIFx) ツール (Difxapi.dllDifxapp.dllDifxappa.dll、と DPInst.exe) は非推奨となり、WDK には含まれなくなりました。

代わりに、インストーラーを必要としないスタンドアロン ドライバー パッケージ としてドライバー パッケージを提供することをお勧めします。 これは、ドライバー パッケージが依存する可能性があるシステム状態を変更するインストーラーに応じてではなく、正しく機能する必要がある独自の設定または構成を追加する自己完結型パッケージです。 スタンドアロン ドライバー パッケージは、ドライバー パッケージをWindows Update経由で配布したり、オフライン イメージにドライバー パッケージを追加したりするなどのドライバー パッケージのシナリオをサポートするために必要です。 ハードウェアが接続されているシステムにWindows Update経由で配信するスタンドアロン ドライバー パッケージを公開することをお勧めします。 Windows Update でドライバー パッケージを発行する最初の手順は、ドライバー パッケージを Windows ハードウェア デベロッパー センターに送信することです。

DIFx を使用する場合は、古い WDK を使用して適切なツールを入手する必要があります。 次の注意事項に従ってください:

  • ドライバー パッケージで Windows 8.1 以降の TargetOSVersion 値のみを指定している場合、DIFxApp の GetVersionExへの依存関係 (Windows 8.1 以降で変更された API) により、DIFxApp MSI カスタム アクション (Difxapp.dllおよびDifxappa.dll) を使用することはできません。 TargetOSVersionINF Manufacturer セクションで指定されています。 DIFxApp は、MsiProcessDrivers、MsiInstallDrivers、MsiUninstallDrivers などの MSI カスタム アクションを公開します。 ドライバー パッケージで Windows 8.1 以降の TargetOSVersion 値が指定されている場合、MSI でこれらのカスタム アクションを使用することはできません。
  • Windows 8.1 以降では、リンク先 Difxapi.dll のアプリケーションには、アプリケーションを実行する OS バージョンを対象とするアプリ マニフェストが含まれている必要があります。 これは、WINDOWS 8.1 以降で変更された API である GetVersionEx に対する DIFxAPI の依存関係が原因です。 Windows 8.1 での GetVersionEx の変更の詳細については、「Windows 用アプリケーションのターゲット設定」を参照してください。
  • ドライバー パッケージで TargetOSVersionBuildNumber 部分 (Windows 10 バージョン 1607 (ビルド 14310 以降) で導入) を使用している場合、そのドライバー パッケージで DIFx ツールを使用することはできません。 DIFx ツールでは、BuildNumber のターゲット設定はサポートされていません。
  • DIFx バージョン 2.1 を使用します。これは Windows 7 WDK から Windows 10 バージョン 1511 WDK で入手できます。 以前のバージョンの WDK では DIFx バージョン 2.1 を使用できますが、Windows 7 以降のバージョンの Windows と互換性がありません。
  • 以前の WDK には、x86 バージョンと amd64 バージョンの DIFx バイナリのみが含まれています。 DIFx バイナリは、他のアーキテクチャでは使用できません。

更新は行われなくなりましたが、DIFx の API リファレンス ドキュメントは Difxapi.h にあります。 DriverPackagePreinstall、DriverPackageInstall、DriverPackageUninstall API を使用している場合は、DiInstallDriverDiUninstallDriverへの切り替えを検討してください。

ドライバー パッケージをインストールするためにカスタム インストーラーが必要な場合は、PnPUtil コマンド ライン ツールまたはドライバーインストール機能を呼び出すカスタム インストーラーを使用します。

同様に、ドライバー パッケージをアンインストールするためにカスタム インストーラーが必要な場合は、PnPUtil または DiUninstallDriver または SetupUninstallOEMInf を呼び出すカスタム インストーラーを使用します。