Fix it now
0x000000ED means the I/O subsystem tried to mount the boot volume and failed. Parameter 2 is the status code the file system returned explaining why, and Microsoft’s published order of work is Startup Repair, then chkdsk from the recovery environment, then the boot records, then suspect the drive.
diskpart
list volume
exit
chkdsk X: /f /r
- Start the recovery environment. After two consecutive failed starts Windows brings it up on its own; otherwise boot installation or recovery media.
- Try Troubleshoot, Advanced options, Startup Repair first. Microsoft lists it before anything you type.
- If that does not help, open the Command Prompt and run
diskpart,list volume,exit. The Windows volume is often not C inside recovery, and running chkdsk against the wrong letter wastes an hour. - Run
chkdsk X: /f /ragainst the Windows volume. The /r pass reads every sector and takes hours on a large disk. - If it still will not mount, repair the boot records with
bootrec /scanosandbootrec /rebuildbcd, or rebuild them withbcdboot X:\Windows /s S: /f ALLusing the letters diskpart reported.
Image the disk before running a repair pass if you can. chkdsk /r writes to a device that has already failed to serve a mount request.
If the volume mounts and Windows starts, stop here. The next section covers reading parameter 2 and the codes that are not this fault at all.
Why it happens
Mounting a volume is the file system driver looking at what is on the disk, recognising it, and building the in-memory structures that let the rest of the system use it. Everything else waits on that: the registry, the drivers, the session manager. If the boot volume will not mount there is no point continuing, so the I/O subsystem stops with 0x000000ED.
Parameter 1 is the device object of the boot volume and parameter 2 is the status code the file system returned to explain why the mount failed. That second value is the only thing on the record that says what actually went wrong, and it is the part most walkthroughs skip. Read it from the BugCheck event in the System log if the machine ever starts, or from the dump.
Microsoft’s resolution has an order and it is worth following. Startup Repair first, from Troubleshoot then Advanced Options, using bootable recovery media if the machine cannot get there itself. Then CHKDSK /r from the recovery environment command prompt to validate and repair the file system. Then bootrec to fix the master and boot records. And only if none of that works, the possibility that the drive has failed – at which point the vendor’s own diagnostic tools are the next step.
Two codes commonly filed with this one are different faults entirely. 0x00000058 is not a generic volume manager error: it is issued if the system is booted from the wrong copy of a mirrored partition, because the hives say the mirror is valid when it is not and should be pointing at the shadow partition. Microsoft says it is almost always caused by the primary partition being revived, and the documented resolution is to reboot from the shadow partition. And 0x0000008B, an MBR checksum mismatch between what the loader passed in and what the system calculated, is one Microsoft says typically indicates a virus, with a published resolution of booting from write-protected media carrying a scanner and cleaning the infection.
The file system on the boot volume is damaged
You have this one if The machine stopped after a power loss, a forced reset or a failed update, and parameter 2 is a file system status rather than a device one.
- Run Startup Repair from the recovery environment first.
- Then
chkdsk X: /f /ragainst the Windows volume, using the letterlist volumereported. - Let the /r pass complete. Interrupting it on a system volume can leave the file system in a worse state than it started.
- Restart and confirm Windows reaches the desktop before doing anything else.
The boot records are damaged or point somewhere wrong
You have this one if The volume checks clean but the machine still will not start, or the boot entry references a device that is not there.
- Run
bootrec /scanosto find Windows installations, thenbootrec /rebuildbcdto add them back. - Where the store needs rebuilding outright,
bcdboot X:\Windows /s S: /f ALLwrites both UEFI and BIOS boot files –/frequires/s, and the plain formbcdboot X:\Windowsis also valid. - Confirm the volume letters with
diskpartandlist volumebefore running either. - If the boot status shown is 0xC0000098, read it as a named file being missing or corrupt – see the reference section – rather than as a broken store.
A boot record infection
You have this one if The code is 0x0000008B. Parameters 1 to 3 are the disk signature, the loader’s checksum and the system’s checksum.
- Follow the published resolution: boot from write-protected media carrying a virus scanner and clean the infection.
- Do not simply rebuild the master boot record. Repairing it without removing what modified it reinstates the same condition on the next boot.
- Update the scanner before you use it. Microsoft’s own note is that newer infections are usually only detected by a recently updated scanner.
- Once clean, verify the machine starts and then rebuild the boot records if they are still wrong.
The machine booted from the wrong half of a mirror
You have this one if The code is 0x00000058 on a system with a mirrored system partition.
- Read it literally: the hives say the mirror is valid when it is not, and should be pointing at the shadow partition.
- Microsoft’s cause note is that this is almost always because the primary partition was revived.
- The documented resolution is to reboot the system from the shadow partition.
- Do not run chkdsk or bootrec against the wrong half of the mirror first – it changes the state you are trying to reason about.
Full reference
The codes, and what each really says
| Code | Published meaning | Documented resolution |
|---|---|---|
0x000000ED |
The I/O subsystem attempted to mount the boot volume and it failed | Startup Repair, then CHKDSK /r from WinRE, then bootrec, then suspect the drive |
0x00000058 |
The system was booted from the wrong copy of a mirrored partition | Reboot the system from the shadow partition |
0x0000008B |
The MBR checksum the system calculated does not match the one the loader passed in | Boot write-protected media with a virus scanner and clean the infection |
0xC0000098 |
A critical system driver is missing or corrupt; as an NTSTATUS, STATUS_FILE_INVALID | Repair or replace the named binary |
0xC0000098, read properly
This status turns up on boot screens with a file name above it, and it has a published meaning in both of the places it appears. On the boot screen Windows shows ‘File: <binary>, Status: 0xc0000098, Info: Windows failed to load because a critical system driver is missing or corrupt’, and Microsoft’s documented cause is that the binary is from a different version of Windows than the operating system on the machine. The remedy is at file level: check the volume, then replace that specific binary from the component store with a matching copy. As an NTSTATUS value it is STATUS_FILE_INVALID, meaning the volume for a file has been externally altered so the opened file is no longer valid. Neither reading is a broken boot configuration store, so rebuilding the BCD is aimed at the wrong thing.
Recovery environment commands, with the letters that matter
| Command | What it does |
|---|---|
diskpart then list volume |
Shows the volume letters recovery has assigned. Windows is often not C here |
list partition |
Confirms the layout, including the system partition on a UEFI machine |
chkdsk X: /f /r |
Fixes file system errors and locates bad sectors on the Windows volume |
bootrec /scanos |
Scans the disks for Windows installations |
bootrec /rebuildbcd |
Rebuilds the boot configuration store from what it finds |
bootrec /fixmbr |
Writes a Windows-compatible master boot record on a BIOS machine |
bcdboot X:\Windows /s S: /f ALL |
Writes UEFI and BIOS boot files to the system partition |
sfc /scannow |
Repairs missing or corrupted system files once Windows starts |
Run bootrec /fixmbr only on a machine that boots in legacy BIOS mode with an MBR disk. On a UEFI machine the boot files live on an EFI system partition and bcdboot is the tool that writes them.
Where cloning goes wrong
A clone that will not mount is usually a clone whose partition table and file system disagree – the tool copied the partition boundaries but not the file system’s own record of how large the volume is, or the target is smaller than the source and something was silently truncated. It is worth checking whether the tool adjusted both, because a volume the file system believes is larger than the partition it lives in will not mount. Where a move between machines is planned rather than a rescue, preparing the source with sysprep /generalize before capture avoids most of this.
When none of it works
- Confirm the drive is detected in firmware setup at all, and consistently across several cold starts.
- Run the drive vendor’s own diagnostic tool – Microsoft’s own last step for this code is that the drive may have failed.
- Attach the disk to another machine as a secondary drive and see whether it mounts there. If it does, the fault is on the original machine’s path rather than in the volume.
- Image the disk before anything destructive, and prefer recovering the data over recovering the installation if the drive is failing.
- If parameter 2 pointed at a device status rather than a file system one, stop repairing the volume and start on the hardware.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0x000000ED |
UNMOUNTABLE_BOOT_VOLUME: the I/O subsystem attempted to mount the boot volume and it failed. Parameter 1 is the device object of the boot volume and parameter 2 is the status code from the file system explaining why the mount failed | Microsoft Learn |
0x00000058 |
FTDISK_INTERNAL_ERROR: issued if the system is booted from the wrong copy of a mirrored partition. The hives indicate the mirror is valid when it is not and should be pointing at the shadow partition, almost always because the primary partition was revived. The documented resolution is to reboot from the shadow partition | Microsoft Learn |
0xC0000098 |
On the boot screen, ‘Windows failed to load because a critical system driver is missing or corrupt’, which Microsoft attributes to a binary from a different version of Windows than the running system; the fix is to repair or replace that named file. As an NTSTATUS value it is STATUS_FILE_INVALID – the volume for a file has been externally altered so the opened file is no longer valid | Microsoft Learn |
0x0000008B |
MBR_CHECKSUM_MISMATCH: the MBR checksum Windows calculates does not match the one the loader passed in. Parameters 1 to 3 are the disk signature, the loader’s checksum and the system’s checksum. Microsoft states this error typically indicates a virus and prescribes booting write-protected media with a virus scanner | Microsoft Learn |
Confirm the fix worked
- The machine starts to the desktop on three consecutive cold starts.
chkdsk C: /scanfrom within Windows reports no problems.- Disk Management shows the volume healthy and at the size you expect.
- The drive’s own health tool reports no growth in reallocated or pending sectors.
- If the code was 0x0000008B, a current scanner reports the master boot record clean before you rebuild anything.
Questions people ask about this
Do I have to reinstall Windows?
Usually not. Microsoft’s published order is Startup Repair, then CHKDSK /r from the recovery environment, then bootrec, and only then the possibility that the drive has failed. A reinstall skips straight past three cheaper steps and takes your data with it.
Which volume letter do I give chkdsk?
The one list volume shows inside the recovery environment, which is frequently not C. Running the repair against the recovery partition instead of the Windows volume is the most common way to lose an hour on this stop code.
The screen shows 0xC0000098 with a file name. Is my BCD broken?
No. That status means a critical system driver is missing or corrupt, and Microsoft attributes it to a binary from a different Windows version than the one installed. The fix is at file level – check the volume, then replace that specific file – not a BCD rebuild.
Should I run bootrec /fixmbr?
Only on a legacy BIOS machine with an MBR disk. On a UEFI machine the boot files live on the EFI system partition and bcdboot is what writes them. And if the code was 0x0000008B, clean the infection first – rebuilding the record without removing what changed it just recreates the mismatch.
What is 0x00000058 really telling me?
That the system booted from the wrong copy of a mirrored partition. It is not a general volume manager failure, and the documented fix is to reboot from the shadow partition rather than to repair anything.
