[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

 

On Fri, Oct 23, 2020 at 12:55 PM Paul Durrant <xadimgnik@xxxxxxxxx> wrote:

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

 

From: win-pv-devel <win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On Behalf Of Troy Crosley
Sent: 22 October 2020 13:04
To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
Subject: Driver uninstallation issues

 

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.

 

Troy


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.