How to fix failing cumulative update on Windows 10 Pro (1909) upgraded from Windows 7 SP1

2

I am seeing error 0x80070003 in CBS.log after consistently failing to install the cumulative update for February 2020 (KB4532693).

The logged error is always:

2020-03-06 21:29:44, Error                 CBS    Shtd: Failed while processing non-critical driver operations queue. [HRESULT = 0x80070003 - ERROR_PATH_NOT_FOUND]

... where ERROR_PATH_NOT_FOUND is the corresponding Win32 error code (3) translated to HRESULT.

The corresponding error in %WINDIR%\inf\setupapi.dev.log looks like this:

>>>  [Install Driver Updates]
>>>  Section start 2020/03/06 21:29:43.850
      cmd: C:\WINDOWS\winsxs\amd64_microsoft-windows-servicingstack_31bf3856ad364e35_10.0.18362.651_none_5f2896f458eff373\TiWorker.exe -Embedding
     sto: Image State        = Specialized
     sto: Image Architecture = amd64
     sto: Image OS Version   = 10.0.18363
     sto: Image Product Type = WinNT
     sto: Transaction        = CbsDriversAndPrimitives
     sto: Driver Updates     = 644
!    inf: Unable to load INF: 'C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf'(00000003)
!!!  inf: Invalid INF 'C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf', parsing error on line 0. Code = 1002
!!!  sto: Failed to get version info for driver update 'C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf'. Error = 0x00000003
<<<  Section end 2020/03/06 21:29:44.069
<<<  [Exit status: FAILURE(0x00000003)]

So it seems I am looking for a file named C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf. The folder that is supposed to contain this file doesn't exist. The slight problem are the permissions (ACL) on the parent folder, though. Surprisingly the file netathrx.inf exists in %WINDIR%\INF.

There is indeed an Qualcomm Atheros network adapter in this laptop:

Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter

My question now: how do I find that file and replace it in hopes of the update installation succeeding after that?

Note: right now I've tried everything from installing the (cumulative) update manually using dism /online with and without giving a mounted install.wim as /source and I also used sfc /scannow (which found and fixed one issue, but after that point never reported anything again). So I am at a loss as to what non-destructive action I can take short of using the "repair" feature from the Windows 10 installation media, which I fear would reset stuff in the registry and thus could affect installed programs.


I have no third-party AV/AM solution, instead using the Windows Defender suite of applications.

windows-10
windows-update
windows-10-v1909
asked on Super User Mar 7, 2020 by 0xC0000022L • edited Mar 7, 2020 by 0xC0000022L

1 Answer

0

The adapter in question which seems to cause the update installation to require netathrx.inf reports with lspci (on Linux) as:

05:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)

The way I chose to investigate the issue was as follows:

  1. download a pristine copy of "Windows 10" using the media creation tool from Microsoft
  2. extract the matching Windows as install.wim from install.esd
  3. mount that (dism /mount-image /imagefile:install.wim /index:1 /mountdir:%CD%\mount /readonly)
  4. check the contents of System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf and INF\netathrx.inf relative to the mount point
  5. copy the files from the previous point into some temporary location
  6. unmount the install.wim, discarding all possible changes (dism /unmount-image /mountdir:%CD%\mount /discard)

The findings from this were as follows:

  1. the files in the two locations seemed to be identical and hardlinked to the same content (as can often be seen with SxS also)
  2. computing the digests over the contents of the files proved the fact that they were identical (they were also identical to the one existing in %SystemRoot%\INF)

For reference

For reference I am giving the SHA-2 and SHA-1 of the netathrx.inf:

77dde20a2eed36696f2f5e036a838ff0fbc45dec33ad7647c789397c96553240  netathrx.inf
5a57d3a77021e14bec535dbe2d05ee734ec36dd0  netathrx.inf

After verifying these things the path to fixing this immediate issue seemed clear (although I did not know at the point whether a bigger issue would be hiding behind this one).

Due to the restrictive ACL of the %SystemRoot%\System32\DriverStore\FileRepository I opted to "abuse" PsExec to impersonate SYSTEM (aka LocalSystem). This can be done - from an elevated prompt - by executing psexec -sid %COMSPEC% (or even psexec -sid cmd.exe).

This way I was now able (current working directory was %SystemRoot%) to make the directory for the missing INF file:

md System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d 

after that I simply hardlinked the file in place:

mklink /h System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf INF\netathrx.inf

Without reboot I was able to initiate another attempt of installing said cumulative update and reboot to see it succeed.

And indeed it succeeded this time.

Hope this detailed description helps others to resolve similar issues. It's unfortunately a highly manual process and I was surprised to see that dism /online /cleanup-image /checkhealth, dism /online /cleanup-image /scanhealth and dism /online /cleanup-image /restorehealth didn't report or fix the issue.

NOTE: please be aware that inside the install.wim the folder netathrx.inf_amd64_220db23f5419ea8d contains more files than just the INF. I suspect that it would make sense to copy (or hardlink if they exist elsewhere) the files for other scenarios.

answered on Super User Mar 7, 2020 by 0xC0000022L

User contributions licensed under CC BY-SA 3.0