WALKTHROUGH OF UMDF COINSTALLER ACTIONS:
The UMDF coinstaller handles only the DIF_INSTALLDEVICE code and performs the following steps:
PREDEVICE INSTALL phase
1) Check for supported OS version (XP SP2+, 2003 SP1+, Vista RTM+, 2008, Windows 7 or newer)
2) Check status of current installation:
a) Read version information for all UMDF binaries
b) If max on-disk file version > co-installer -> NO UPDATE
c) If max on-disk file version == co-installer BUT mismatched versions found (or missing files)-> damaged installation -> UPDATE
d) If all on-disk file versions == co-installer AND>= 1 UMDF service cannot be opened (wudfsvc, wudfrd, wudfpf) -> UPDATE
e) If all on-disk file versions < co-installer -> UPDATE
3) Extract MSU or update.exe package to temporary folder
4) Call MSU or update.exe package to update system
5) The update package creates marker file for the framework (e.g. %windir%\\system32\\drivers\\MsftWdf_user_01_09_00.Wdf)
a) Possible that the update package asks for reboot, because files were marked for replacement after reboot
b) If reboot is needed, then the installation stops and will be restarted after the reboot
6) Load the UMDF 1.9 config co-installer
(%windir%\\system32\\wudfcoinstaller.dll)
7) Parse and validate INF (DDInstall.WDF section)
8) Create UMDF registry keys based on INF: impersonation level, kernel-mode client support, I/O dispatcher, host timeout, etc.
9) Start UMDF Device Manager (wudfsvc)
The PNP manager proceeds with installation (file copy, registry entries, etc.)
POSTDEVICE INSTALL phase
1) UMDF config co-installer creates marker file for the driver
(e.g. %windir%\\system32\\drivers\\Msft_User_WUDFEchoDriver_01_09_00.Wdf)
WALKTHROUGH OF KMDF COINSTALLER ACTIONS:
The UMDF coinstaller handles only the DIF_INSTALLDEVICE code and performs the following steps:
PHASE 1: Pre-device installation
1) Check for supported OS version (Windows 2000 or higher is supported)
2) Find KmdfLibraryVersion in INF and check if it is supported (major version has to be equal to the major version of the coinstaller)
3) Check if system needs to be updated (Vista SP1/2008 or lower)
a) On-disk version of wdf01000.sys < co-installer version OR
b) On-disk version of wdf01000.sys == co-installer version AND damaged installation (ARP registry entry missing OR KMDF service cannot be opened using SCM APIs)
4) Check if reboot is required:
a) KMDF service is running AND
b) KMDF in-memory < co-installer version 5) Extract WDFCAB_RESOURCE to temporary folder
6) Call MSU or update.exe package to update system
a) It's possible that the update package asks for reboot, because files were marked for replacement after reboot
7) Create marker file for the framework
(e.g. %windir%\\system32\\drivers\\MsftWdf_Kernel_01009_Coinstaller_Critical.Wdf)
PHASE 2: PNP manager The PNP manager proceeds with the installation (file copy, registry entries, etc.)
PHASE 3: Post-device installation
1) If driver is marked as bootstart, then KMDF service is set to bootstart
2) Create marker file for the driver
(e.g. %windir%\\system32\\drivers\\Msft_Kernel_WdfRamdisk_01009.Wdf)
3) If reboot is required, then the PNP manager prompts the user for reboot