Driver Install Frameworks Overview

The goal of Driver Install Frameworks is to provide for the consistent, reliable, and simple installation of drivers in order to create a great experience for users of Microsoft Windows.

The goal for the Driver Install Frameworks tools is to ensure a consistent driver installation experience, ensuring that driver packages:

  • Have not been altered since they were published by a trusted publisher.
  • Are isolated from each other.
  • Can be easily diagnosed.
  • Can be updated, rolled back, or completely uninstalled.
  • Can be installed software-first or hardware-first.

Introduction to Driver Install Frameworks Tools

Driver Install Frameworks (DIFx) is the latest Microsoft initiative in the evolution of driver install technologies and tools that began with the incorporation of Plug and Play into Windows 95. The goal of the Driver Install Frameworks initiative is to provide the infrastructure and tools to make device and driver installation "just work."

Users should find drivers and devices easier to diagnose and be confident that drivers can be uninstalled or rolled back if needed. For vendors, it should be easier to create quality driver packages, integrate value-add software, and brand the install experience leveraging standard Windows mechanisms and tools. It is also important to ensure that driver packages are correct and safe. The DIFx tools are designed to support the new device installation architecture for Microsoft Windows Vista and Microsoft Windows Server 2008, which ensures that driver installation packages cannot take actions that might conflict with other device installations, applications, or Windows components and that any installed driver can be rolled back cleanly or uninstalled in the event of problems.

The DIFx tools package includes:

  • Driver Package Installer (DPInst)
  • Driver Installation Frameworks for Applications (DIFXApp)
  • Driver Installation Frameworks API (DIFxAPI) for 32-bit and 64-bit Windows operating systems.

The most recent version of the DIFx tools is included in the latest release of the WDK.

DPInst: Driver Package Installer

DPInst is a component of DIFx that simplifies and customizes the installation of signed driver packages for devices that are not yet installed in a system (commonly known as a software-first installation). DPInst also automatically updates the drivers for any installed devices that are supported by the newly installed driver packages.

DPInst eliminates most manual end-user steps that are required to install a driver package, while allowing driver developers to avoid writing complicated custom installation packages. DPInst supports Windows 2000 and later versions of Windows operating systems. If developers must install device drivers without bundling applications, they can use DPINst to create a fast, double-click installation package in minutes.

By using DPInst, a driver package provider:

  • Enhances the user experience by eliminating most of the manual steps that would otherwise be required to install driver packages. All a user must do is run DPInst, which displays wizard pages that notify the user of the progress of installation and an optional end-user license agreement (EULA) page that gives the user the option to cancel installation.
  • Avoids writing a custom installation program to install driver packages and update the installed drivers for supported devices. To use DPInst, driver package providers do not have to change their driver packages. The provider must only create an installation package that includes DPInst and one or more signed driver packages.

DPInst features include:

  • Driver installation customization. Developers can customize the text that appears on wizard pages, include branding, include an optional EULA, and control whether wizard pages appear.
  • Automatic driver package removal. For each driver package that DPInst installs, it adds an entry to Add or Remove Programs in Windows Control Panel that users can use to remove the driver package from their system. If the user removes a driver package, the package is removed from the driver store, the corresponding INF file is removed from the system INF file directory, and all devices that the package previously supported are updated with the next best available driver.
  • Installation error logs. DPInst logs high-level messages in the DPInst log file, which is stored at %windir%\Dpinst.log. The log file is a plain-text file that contains information and error messages, and identifies the driver package that was being installed when an error occurred.

DPInst is designed primarily to install Plug and Play device drivers. However, DPInst also supports the installation of other types of drivers, as described in the WDK documentation.

For information about using DPInst, see Driver Package Installer (DPInst) in the WDK documentation.

DIFxApp: Driver Install Frameworks for Applications Version 2.0

With DIFxApp, the Microsoft Windows Installer (which creates a .msi package) can be used to install driver packages that are associated with applications in a Windows Installer installation package. DIFxApp is designed to be used by vendors who either already have an MSI installation package for their applications or plan to create one.

For each type of driver that DIFxApp supports, developers must create only one installation package that will install on all the versions of Windows that support that driver type.

DIFxApp supports installing signed Plug and Play function drivers and signed class filter drivers on Windows 2000 and later. DIFxApp can also be configured in legacy mode to install unsigned Plug and Play (PnP) function drivers and unsigned class filter drivers on Windows 2000 and later. In legacy mode, DIFxApp will also install driver packages that have missing files.

DIFxApp maintains a driver-package applications list that associates the driver package with the applications that install the driver package. DIFxApp uses this information to determine whether to uninstall a driver package when an associated application is uninstalled.

Note  This feature is not supported for PnP function drivers in Windows Vista and later versions of Windows.

 

For class filter drivers, DIFxApp also maintains a service-driver packages list that associates a service with the driver packages that support the service. When the currently installed driver for a service is uninstalled, DIFxApp uses this information to update the driver that was installed for a service or to remove the service.

DIFxApp does not maintain a service-driver packages list for PnP function drivers. When DIFxApp installs a PnP function driver, DIFxApp uses the standard Plug and Play and Setup mechanisms to select and install the best compatible driver for the Plug and Play device. When DIFxApp uninstalls a PnP function driver, it selects and installs the best compatible driver from the other drivers that were installed on a computer. If a compatible device driver is not available, DIFxApp removes the device from the device tree.

Tip   If installing drivers and applications in the same installation package is not necessary, DPInst can be used instead of DIFxApp. DPInst simplifies and customizes the installation of driver packages for devices that are installed on a computer (commonly referred to as a hardware-first installation) and devices that are not yet installed on a computer (commonly referred to as a software-first installation).

 

For information about using DIFxApp, see Driver Install Frameworks for Applications (DIFxApp) in the WDK documentation.

DIFxAPI: Driver Install Frameworks API

DIFxAPI provides API-level access to support for install, uninstall, repair, and rollback of drivers. It enables the ability to track and maintain application-driver service associations and provide reference counting on drivers and services.

DIFxAPI is a DIFx component that is supported by Windows 2000 and later for driver packages that comply with the DIFx requirements defined in the WDK documentation. The DIFxAPI distribution includes 32-bit components that support x86-based systems plus 64-bit components that support x64-based systems and Itanium-based systems.

DIFxAPI simplifies these capabilities:

  • Preinstalling Plug and Play driver packages in the DIFx driver store with a single DIFxAPI function call. After a driver package is preinstalled, Setup automatically installs the driver for a device that is subsequently connected to a computer if the driver is the best match for the device.
  • Installing a driver package with a single DIFxAPI function call and uninstalling a driver package with a single DIFxAPI function call.
  • Associating a driver package with an application when the driver package is installed and removing the association when a driver package is uninstalled.
  • Retrieving a path to the driver store INF file of a preinstalled driver package. A driver store INF file path uniquely identifies a preinstalled driver package. An installation application can use a driver store INF file path to uninstall a driver package.
  • Logging significant events to an application that occur during the preinstall, install, or uninstall of a driver package.

For information about DIFxAPI, see Driver Install Frameworks API (DIFxAPI) in the WDK documentation.

Driver Package Requirements for DIFx Tools Version 2.0

By default, DIFx 2.0 tools support installing signed PnP function drivers and signed class filter drivers on Windows 2000 and later. The DIFx tools can also be configured in legacy mode to install unsigned PnP function drivers and unsigned class filter drivers on Windows 2000 and later. In legacy mode, the DIFx tools also install driver packages with missing files.

The DIFx tools require that driver packages comply with generic requirements as defined in the WDK documentation. Additional installation considerations depend on the Windows version, the driver type, the installation mode, whether a driver is signed, and the signature type.

For complete details, see DIFx Driver Package Requirements in the WDK documentation.

DIFx Resources

If you are a developer with questions about DIFx tools, go to Microsoft Help and Support.

 

 

Send comments about this topic to Microsoft