[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Driver uninstallation issues
- To: "'Troy Crosley'" <troycrosley@xxxxxxxxx>
- From: Paul Durrant <xadimgnik@xxxxxxxxx>
- Date: Wed, 28 Oct 2020 19:53:16 -0000
- Cc: <win-pv-devel@xxxxxxxxxxxxxxxxxxxx>
- Delivery-date: Wed, 28 Oct 2020 19:53:23 +0000
- List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>
- Thread-index: AQJomq4nVJNXvjWGoRG7rAHXKHT0mwIruPRWAb58D/Koaj3ywA==
Hi Troy, Yes, we hang onto to co-installers because in some cases they do indeed do that cannot be done via INF files as it is dynamic in nature. Some of them do compatibility checks with drivers of child devices to make sure they do not update a parent driver where no compatible child driver is installed. Some of them also clear ‘unplug’ keys to make sure that the system doesn’t BSOD due to lack of a critical device after uninstallation and reboot. Cheers, Paul From: Troy Crosley <troycrosley@xxxxxxxxx> Sent: 28 October 2020 19:19 To: paul@xxxxxxx Cc: win-pv-devel@xxxxxxxxxxxxxxxxxxxx Subject: Re: Driver uninstallation issues Okay, I can submit patches with those changes. Is there anything specific that coinstallers do that cannot be done through universal inf files (which seem to be what Microsoft is encouraging)?
Troy Hi Troy, Thanks for the analysis. We always seem to be working round Microsoft’s insistence in steadily making co-installers more broken whilst not offering an alternative. If the DIF_SELECTBESTCOMPATDRV works then I guess we go with that. Similarly we should guard DifInstall as you suggest. Cheers, Paul In Windows 10 version 2004, The coinstallers' DIF_INSTALLDEVICE routines do not get called on driver uninstall (via e.g. Apps & Features). In previous versions of Windows, this occurs as part of the uninstall during the null device install and is the only time DifRemove gets called to perform cleanup. We found a workaround by calling DifRemove (in the case of null drivers) from DIF_SELECTBESTCOMPATDRV, which is the only coinstaller request that seems to happen on uninstall in Windows 10 version 2004. I am wondering if there's a better way to address this issue that would be appropriate for the Xen Project.
I also found that the null driver detection in DIF_INSTALLDEVICE is insufficient (I last tested it on Windows 10 version 1803), causing DifInstall to be called rather than DifRemove during null driver installation. Specifically, DriverInfoAvailable gets set to TRUE rather than FALSE as expected for null drivers. I worked around this issue by additionally checking to see if DriverInfoData.DriverType was equal to SPDIT_CLASSDRIVER or SPDIT_COMPATDRIVER.
|
|