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.
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:
install.wim
from install.esd
dism /mount-image /imagefile:install.wim /index:1 /mountdir:%CD%\mount /readonly
)System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf
and INF\netathrx.inf
relative to the mount point install.wim
, discarding all possible changes (dism /unmount-image /mountdir:%CD%\mount /discard
)The findings from this were as follows:
%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.
User contributions licensed under CC BY-SA 3.0