[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 0/6] Remove CoInstallers
Windows 11 22H2 WHQL testing has highlighted the need to remove CoInstallers. The current CoInstaller handle several edge cases that will need replacement implementations. This patch series for most drivers offers a potential solution to the removal of CoInstallers and the required changes to avoid upgrade issues. CoInstallers have several uses currently: - Adds an upgrade block function with the "AllowUpgrade" value blocking driver upgrades when set. - Adds a check to prevent XenBus upgrades from a different vendor / brand. This checks the current device name (if it exists) matches the new device name. - Checks all currently installed child devices have a supported set of interfaces common with the new parent device. - Clears the Unplug keys only when required. - Correctly cleans up user mode services on uninstall. The AllowUpgrade function has not been replaced - I have not seen this used in the current implementations of the drivers. The vendor naming check is specific to XenBus, and I dont think there is a reliable replacement, and was intended to prevent different vendor drivers from attempting to coexist, or upgrade cases from particularly old versions which had a different naming scheme. The interface compatability checks can be replaced with the matching if RevisionIDs in the INF files, so that child devices will only install on parent devices that expose a matching HardwareID or CompatibleID. This does leave the case where the new parent driver could drop support for an interface version that is currently in use. This will mandate a further driver upgrade, and should remove the Unplug keys and mandate a reboot where the emulated devices are present, to ensure continued operation. After this reboot using emulated devices, updates to the child devices should be detected and installed, requiring another reboot to revert to PV devices. Unplug keys getting cleared on all upgrades should allow the next boot to use emulated devices, unless a subsequent install updates dependent drivers to use a working set of new interfaces. The requirement here is that updating any driver should always allow a reboot with emulated devices, should any further issues be detected. I believe that, going forward, changing the DeviceID to remove the RevisionID will avoid the need to set network IDs and copy settings from the previous network connection to the new network connection. This change will mean the driver selection during installation/upgrade will use the HardwareIDs (with RevisionIDs) to match the ID in the DDInstall INF section (with RevisionID), and use the DeviceID to generate the Matching Device ID and Instance ID. This means that once drivers have been upgraded, the InstanceIDs should not change, and Windows should not generate a new network connection (with default settings) for the upgraded driver set - meaning the correct network settings are persisted. I dont have a good replacement for cleaning up user mode services (xenbus_monitor xenagent and xencons_monitor) on device uninstall. This *should* be handled correctly by the PnP manager, but failing to stop either service should not be detremental to the operation of the VM. Selecting the "Delete Drivers" option during uninstall will stop and disable these services, not selecting this option will leave these services running. Owen Smith (6): Reset StorNvme's StartOverride Fix Length calculation in PdoQueryId Remove REV from DeviceID Add Unplug v2 interface (REV_0900000A) Remove CoInstaller from INF Delete CoInstaller code include/revision.h | 3 +- include/unplug_interface.h | 30 +- include/xen.h | 7 + src/coinst/coinst.c | 2136 ----------------- src/coinst/xenbus_coinst.def | 38 - src/coinst/xenbus_coinst.rc | 57 - src/monitor/monitor.c | 63 + src/xen/unplug.c | 15 + src/xenbus.inf | 18 +- src/xenbus/pdo.c | 14 +- src/xenbus/unplug.c | 59 + vs2015/package/package.vcxproj | 3 - vs2015/xenbus.sln | 22 - vs2015/xenbus_coinst/xenbus_coinst.vcxproj | 64 - .../xenbus_coinst/xenbus_coinst.vcxproj.user | 8 - vs2017/package/package.vcxproj | 3 - vs2017/xenbus.sln | 22 - vs2017/xenbus_coinst/xenbus_coinst.vcxproj | 64 - .../xenbus_coinst/xenbus_coinst.vcxproj.user | 8 - vs2019/package/package.vcxproj | 3 - vs2019/xenbus.sln | 22 - vs2019/xenbus_coinst/xenbus_coinst.vcxproj | 70 - .../xenbus_coinst/xenbus_coinst.vcxproj.user | 8 - vs2022/package/package.vcxproj | 3 - vs2022/xenbus.sln | 22 - vs2022/xenbus_coinst/xenbus_coinst.vcxproj | 70 - .../xenbus_coinst/xenbus_coinst.vcxproj.user | 8 - 27 files changed, 184 insertions(+), 2656 deletions(-) delete mode 100644 src/coinst/coinst.c delete mode 100644 src/coinst/xenbus_coinst.def delete mode 100644 src/coinst/xenbus_coinst.rc delete mode 100644 vs2015/xenbus_coinst/xenbus_coinst.vcxproj delete mode 100644 vs2015/xenbus_coinst/xenbus_coinst.vcxproj.user delete mode 100644 vs2017/xenbus_coinst/xenbus_coinst.vcxproj delete mode 100644 vs2017/xenbus_coinst/xenbus_coinst.vcxproj.user delete mode 100644 vs2019/xenbus_coinst/xenbus_coinst.vcxproj delete mode 100644 vs2019/xenbus_coinst/xenbus_coinst.vcxproj.user delete mode 100644 vs2022/xenbus_coinst/xenbus_coinst.vcxproj delete mode 100644 vs2022/xenbus_coinst/xenbus_coinst.vcxproj.user -- 2.41.0.windows.3
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |