[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC: PATCH 0/5] 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. - 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. The AllowUpgrade function has not been replaced - I have not seen this used in the current implementations of the drivers. 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. Owen Smith (5): Remove CoInstaller from INF Delete CoInstaller code Fix Length calculation in PdoQueryId Remove REV from DeviceID Add Unplug v2 include/unplug_interface.h | 30 +- src/coinst/coinst.c | 1732 ----------------- src/coinst/xenvif_coinst.def | 38 - src/coinst/xenvif_coinst.rc | 57 - src/xenvif.inf | 23 +- src/xenvif/pdo.c | 37 +- vs2015/package/package.vcxproj | 3 - vs2015/xenvif.sln | 27 - vs2015/xenvif_coinst/xenvif_coinst.vcxproj | 65 - .../xenvif_coinst/xenvif_coinst.vcxproj.user | 8 - vs2017/package/package.vcxproj | 3 - vs2017/xenvif.sln | 27 - vs2017/xenvif_coinst/xenvif_coinst.vcxproj | 65 - .../xenvif_coinst/xenvif_coinst.vcxproj.user | 8 - vs2019/package/package.vcxproj | 3 - vs2019/xenvif.sln | 27 - vs2019/xenvif_coinst/xenvif_coinst.vcxproj | 71 - .../xenvif_coinst/xenvif_coinst.vcxproj.user | 8 - vs2022/package/package.vcxproj | 3 - vs2022/xenvif.sln | 27 - vs2022/xenvif_coinst/xenvif_coinst.vcxproj | 71 - .../xenvif_coinst/xenvif_coinst.vcxproj.user | 8 - 22 files changed, 62 insertions(+), 2279 deletions(-) delete mode 100644 src/coinst/coinst.c delete mode 100644 src/coinst/xenvif_coinst.def delete mode 100644 src/coinst/xenvif_coinst.rc delete mode 100644 vs2015/xenvif_coinst/xenvif_coinst.vcxproj delete mode 100644 vs2015/xenvif_coinst/xenvif_coinst.vcxproj.user delete mode 100644 vs2017/xenvif_coinst/xenvif_coinst.vcxproj delete mode 100644 vs2017/xenvif_coinst/xenvif_coinst.vcxproj.user delete mode 100644 vs2019/xenvif_coinst/xenvif_coinst.vcxproj delete mode 100644 vs2019/xenvif_coinst/xenvif_coinst.vcxproj.user delete mode 100644 vs2022/xenvif_coinst/xenvif_coinst.vcxproj delete mode 100644 vs2022/xenvif_coinst/xenvif_coinst.vcxproj.user -- 2.41.0.windows.3
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |