UMDF 2 is the latest version of UMDF and supersedes UMDF 1. All new UMDF drivers should be written using UMDF 2. No new features are being added to UMDF 1 and there is limited support for UMDF 1 on newer versions of Windows 10. Universal Windows drivers must use UMDF 2.
For more info, see Getting Started with UMDF.
Before a UMDF driver for a device is initialized, the driver manager and the reflector are loaded by the operating system and the driver host process is created. To ensure that a device starts successfully, the driver manager is loaded and fully initialized by the time the reflector initializes.
When the device is installed, the Plug and Play (PnP) subsystem loads the reflector, if not already loaded. The reflector then contacts the driver manager to create the driver host process. The framework within the newly created driver host process then calls the IDriverEntry::OnInitialize method to initialize the UMDF driver, if not already initialized.
The framework adds a new device object for each device loaded in the driver host process. The following sections show an overview and provide details on how the framework adds a new device: