The problem is usually one or more problematic Write filter exclusions.
Besides the ones Microsoft says are not permitted I've also found a couple more including one that MS says are common exclusion. Here the latest one I've encountered
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
I've had this problem on all of our T610, T620, MT41, MT42, Elitebook 745 G2, and microsoft Hyper-V virtual machines
The problem exists on Windows Embedded 7, Windows 8.1 Embedded Industry Enterprise, Windows 10 Enterprise with Unified Write filter enbled
It has been heck figuring it out.
You have to be very careful adding write filter exclusions as each new one you add has the potential for causing this issue.
You litterally have to reboot your systems 50+ times after you add a new write filter exclusion to make sure it doesn't cause Blue Screens (often with 0xC000021A ). You'll be lucky if the BSOD happens right away, but don't expect it to, you have to reboot alot and test.
It's so bad I've developed a process now where I setup a whole bunch of Hyper-V virtual machines ( 5 or more) running Windows 10 Enterprise with the Write filter enabled and configured as desired.
I created a simple Powershell script on my Hyper-V host computer also running Windows 10 Enterprise (or Pro) which comes with Hyper-V support, that shuts down and restarts the virtual machines every minute. I let that run for close to 1000 reboots while I do other things.
#Number of reboots performed so far. Usually leave at 0 $Reboots = 0 #Input the first part of your VMs names. Mine are all called WIN10VM01,WIN10VM02... $VirtualMachinePrefix = "WIN10" #Duh $SecondsBetweenReboots = 60 #Enter Names in quotes seperated by , of VMs that have your prefix that you don't want to reboot $VMsNotToReboot = "WIN10VM01","Win10VM05" #This will loop forever or until a VM no longer responds to a reboot request. #If a VM isn't responding to a reboot request you will receive a prompt to forcibly "Reset" it. When this happens you usually will have encountered a BSOD and your write filter exclusion is a problem. #Sometimes they may not respond to reboots but not receive a BSOD. Just click "Yes" on the reset prompt when you get it and the script will continue. while ($true) { #Displays the Date and time on screen Get-Date #Gets the list of VMs that match the prefix you provided $VMs = Get-VM "$VirtualMachinePrefix*" | Where-Object Name -NotIn $VMsNotToReboot #Counts the # of VMs that match the prefix you provided that will be rebooted $NumberofVMs = ($VMs | Measure).count #Performs the shutdown and startup.. one at a time $VMs | Stop-VM -Passthru | Start-VM #Counts then displays the number of reboots performed without error so far ($Reboots = $Reboots + $NumberofVMs) #Time between reboot attempts. Give enough or shutdown command will display a prompt and interrupt the script until you resond Start-Sleep -Seconds $SecondsBetweenReboots }