2025-11-26

Windows Update fails with 0x800F0983 - the way to the solution

Recently we noticed a number of computers that refused to install the latest Windows 11 24H2/25H2 cummulative update and were throwing error 0x800F0983 - which at this time was KB5068861.

If you search the internet the issue appears to be very common but noone seems to have an actual solution for the problem. Instead they are all telling you to reinstall Windows, to do an Inplace Update, to run a repair installation ...

That is not a solution for me - that is giving up. Especially on multiple remote computers. So instead I tried figuring out what was actually preventing these updates from getting installed.

As a preface: The computers this occured on were installed with Windows 10 22H2 and later upgraded through a SCCM task sequence to Windows 11 24H2. Multiple Windows updates have been successfully installed on them after the migration.


Besides the recommendations to reinstall Windows (with or without keeping all your data and programs) the other "tips & tricks" included the usual suspects of DISM and SFC.

But having already tried all these with no success the problem was hiding much deeper.

Just to reiterate, all the following commands came back clean, no errors found or repaired, and in the end achieved nothing for this problem.

DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
SFC /scannow
DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
They certainly do not hurt to run and despite popular belief they actually do something useful once in a while and actually repair some things that prevent Windows updates to be installed, but not in this case.

But back to the problem at hand.

As a little background info, we are deploying our updates through SCCM. So we checked the "WUAHandler.log" under "C:\Windows\CCM\Logs" and found the following:

<![LOG[1. Update (Missing): 2025-11 Kumulatives Update für Windows 11 Version 24H2 für x64-basierte Systeme (KB5068861) (26100.7171) (4b9492eb-7aff-4117-b896-cecd59e61bc8, 100)]LOG]!><time="09:59:19.394-60" date="11-25-2025" component="WUAHandler" context="" type="1" thread="16444" file="cwuahandler.cpp:1914">

<![LOG[Async installation of updates started.]LOG]!><time="09:59:19.719-60" date="11-25-2025" component="WUAHandler" context="" type="1" thread="16444" file="cwuahandler.cpp:2367">

<![LOG[Update 1 (4b9492eb-7aff-4117-b896-cecd59e61bc8) finished installing (0x800f0983), Reboot Required? No]LOG]!><time="10:03:11.594-60" date="11-25-2025" component="WUAHandler" context="" type="1" thread="17872" file="cwuahandler.cpp:2547">

<![LOG[Async install completed.]LOG]!><time="10:03:11.594-60" date="11-25-2025" component="WUAHandler" context="" type="1" thread="17872" file="cwuahandler.cpp:2574">

<![LOG[Installation job encountered some failures. Job Result = 0x80240022.]LOG]!><time="10:03:11.594-60" date="11-25-2025" component="WUAHandler" context="" type="2" thread="16444" file="cwuahandler.cpp:4461">

<![LOG[Installation of updates completed.]LOG]!><time="10:03:11.594-60" date="11-25-2025" component="WUAHandler" context="" type="1" thread="16444" file="cwuahandler.cpp:4821">

So now we already had two different error codes. I will spare you the wild goose chase for 0x80240022 though, since the focus of this article is 0x800f0983.

Even a manual attempt at installing the update downloaded from the Microsoft Update Catalog ended with the same error.

After exhausting all the usual tricks we use to get Windows to install updates again (inlcuding DISM, SFC, resetting WU, ...) it was time to turn to the "CBS.log" in "C:\Windows\Logs\CBS".

After first removing the old log to start with a clean slate I tried installing the update again. Of course it failed with the same error code. But now I had a clean CBS.log to work with - though at just over 200MB and 1.5 million lines I certainly expected much worse than what I got in the end.

Simply searching for "800f0983" (without the leading "0x") gave me exactly what I needed.

2025-11-26 15:31:30, Info                  CSI    00000027 Component Microsoft-Windows-SmbDirect, version 10.0.26100.5074, arch amd64, nonSxS, pkt {l:8 b:31bf3856ad364e35} does not have a winner but has 2 other component version(s)

2025-11-26 15:31:30, Info                  SXS    Hydration: No matching winner found. Taking the first match amd64_microsoft-windows-smbdirect_31bf3856ad364e35_10.0.26100.5074_none_e6582b4c42ed52c9\smbdirect.sys

2025-11-26 15:31:30, Info                  SXS    ThreadId: 7900, Thread started, File: amd64_microsoft-windows-smbdirect_31bf3856ad364e35_10.0.26100.5074_none_e6582b4c42ed52c9\smbdirect.sys, FileCount: 1

2025-11-26 15:31:30, Error                 CSI    00000028 (F) Component directory missing. Dir: \SystemRoot\WinSxS\amd64_microsoft-windows-smbdirect_31bf3856ad364e35_10.0.26100.1301_none_e630f642430bb3bc, File: smbdirect.sys, Comp: Microsoft-Windows-SmbDirect, version 10.0.26100.5074, arch amd64, nonSxS, pkt {l:8 b:31bf3856ad364e35}[gle=0x80004005]

2025-11-26 15:31:30, Error                 CSI    00000029@2025/11/26:14:31:30.149 (F) onecore\base\wcp\componentstore\storelayout.cpp(2204): Error 800f0983 [Warning,Facility=15 (0x000f),Code=2435 (0x0983)] originated in function ComponentStore::CRawStoreLayout::OpenComponentFile expression: ((SCODE) (((unsigned long)(1)<<31) | ((unsigned long)(15)<<16) | ((unsigned long)(0x983))) )

[gle=0x80004005]

And basically right after that the second match:

2025-11-26 15:31:30, Error                 SXS    ThreadId: 7900, failed to get hash info of winner version: 10.0.26100.1301 for file: amd64_microsoft-windows-smbdirect_31bf3856ad364e35_10.0.26100.5074_none_e6582b4c42ed52c9\smbdirect.sys: 800f0983 [Warning,Facility=15 (0x000f),Code=2435 (0x0983)]

2025-11-26 15:31:30, Error                 SXS    WIL Origination: onecore\base\servicing\turbostack\lib\parallelhydrator.cpp(966)\TurboStack.dll!00007FFEF2541219: (caller: 00007FFEF254A090) Exception(1) tid(1edc) 800F0983 

2025-11-26 15:31:30, Error                 CSI    0000002a@2025/11/26:14:31:30.413 (F) onecore\base\servicing\turbostack\lib\parallelhydrator.cpp(966): Error 800f0983 [Error,Facility=(000f),Code=2435 (0x0983)] originated in function (null) expression: (null)

[gle=0x80004005]

2025-11-26 15:31:30, Info                  SXS    Hydration: failed with hresult: 800f0983 [Error,Facility=(000f),Code=2435 (0x0983)]

2025-11-26 15:31:30, Info                  CBS    Parallel hydration failed [HRESULT = 0x800f0983 - PSFX_E_MATCHING_COMPONENT_DIRECTORY_MISSING]

Looking at the two log excerpts tells us two things, which I marked in green:

  • The directory "C:\Windows\WinSxS\amd64_microsoft-windows-smbdirect_31bf3856ad364e35_10.0.26100.1301_none_e630f642430bb3bc" appears to be missing.
  • The file "C:\Windows\WinSxS\amd64_microsoft-windows-smbdirect_31bf3856ad364e35_10.0.26100.5074_none_e6582b4c42ed52c9\smbdirect.sys" appears to be missing too.

Note the difference in the version number, 1301 vs. 5074.

I checked the WinSxS folder and confirmed that the folder for the older version is indeed not there. And not only is the "smbdirect.sys" file missing from the newer version's folder, the folder is completely empty.

The thing is that SmbDirect is actually disabled on all the affected client, as Powershell confirms:

> Get-WindowsOptionalFeature -Online -FeatureName SmbDirect

FeatureName      : SmbDirect
DisplayName      : SMB Direct
Description      : Remote Direct Memory Access (RDMA) support for the SMB 3.x file sharing protocol
RestartRequired  : Possible
State            : Disabled
CustomProperties : 

Apparently, despite being disabled, somehow Windows thinks that SmbDirect is still referenced in CBS. And because the related files and folders either do not exist or are empty in the the WinSxS folder the Windows update fails to install.

The solution to this is quite easy. Simply execute the following Powershell command:

Disable-WindowsOptionalFeature -Online -FeatureName SmbDirect -Remove

Checking the status of the SmbDirect feature again now shows the following:

Get-WindowsOptionalFeature -Online -FeatureName SMBDirect

FeatureName      : SmbDirect
DisplayName      : SMB Direct
Description      : Remote Direct Memory Access (RDMA) support for the SMB 3.x file sharing protocol
RestartRequired  : Possible
State            : DisabledWithPayloadRemoved
CustomProperties : 

And that is it. That solved Windows Update error 0x800F0983 for me on multiple computers.


Your mileage might very well vary. It might be a different file/folder that is missing in WinSxS, but you should now know where to look and be able to find the cause and fix it yourself.


The only question that really remains is: Why is DISM not reporting this issue? I guess missing files and folders cannot be corrupt so there is simply nothing wrong ...


[1] https://beingwinsysadmin.blogspot.com/2025/11/windows-update-fails-with-0x800f0983.html

No comments:

Post a Comment