Driver Install Frameworks Overview
Updated: January 13, 2010
On This Page
The Goal of Driver Install Frameworks
The Goal of Driver Install Frameworks
The consistent, reliable, and simple installation of drivers is essential 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:
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:
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:
DPInst features include:
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:
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.
If you are a developer with questions about DIFx tools, go to Microsoft Help and Support.