DIFx Guidelines

Starting in Windows 10 Version 1607 (Redstone 1), the Driver Install Frameworks (DIFx) tools (Difxapi.dll, Difxapp.dll, Difxappa.dll, and DPInst.exe) are deprecated and are no longer included in the WDK.

Instead, we recommend providing your driver package as a standalone driver package that does not require an installer. This is a self-contained package that adds its own settings or configuration, rather than depending on an installer to modify system state. Standalone driver packages are required in order to have robust support of all driver package scenarios. The recommended way to publish a standalone driver package is through Windows Update. The first step to doing this is to submit your driver package to the Windows Hardware Dev Center.

If you choose to use DIFx anyway, you must use an older WDK to get the right tools. The following caveats apply:

  • If your driver package specifies only TargetOSVersion values of Windows 8.1 or later, you cannot use the DIFxApp MSI custom action due to DIFxApp's dependency on GetVersionEx, an API that changed starting in Windows 8.1. TargetOSVersion is specified in the INF Manufacturer Section. DIFxApp exposes MSI custom actions such as MsiProcessDrivers, MsiInstallDrivers, and MsiUninstallDrivers. If your driver package specifies TargetOSVersion values of Windows 8.1 or later, you cannot use these custom actions in your MSI.
  • Starting in Windows 8.1, applications that link to Difxapi.dll must contain an app manifest targeting the OS version on which the application is intended to run. This is due to DIFxAPI's dependency on GetVersionEx, an API that changed starting in Windows 8.1. For more on changes to GetVersionEx in Windows 8.1, see Targeting your application for Windows.
  • If your driver package uses the BuildNumber part of TargetOSVersion (introduced in Windows 10, version 1607 (Build 14310 and later)), you cannot use the DIFx tools with that driver package. The DIFx tools do not support BuildNumber targeting.
  • Use DIFx version 2.1, which is available in the Windows 7 WDK through the Windows 10 Version 1511 WDK. Although a DIFx version of 2.1 was available in earlier versions of the WDK, it was not compatible with Windows 7 and later versions of Windows.

Although it's no longer being updated, you can find API reference documentation for DIFx at Difxapi.h.

If you still need a custom installer to install your driver package, use either the PnPUtil command line tool or a custom installer that calls driver installation functions.

Similarly, if you need the custom installer to uninstall the driver package, use either PnPUtil or a custom installer that calls DiUninstallDriver or SetupUninstallOEMInf.