Fix Error Code 0x000000C9    |    STOP 0x000000C9    |    Repair Windows Error 0x000000C9


STOP 0x000000C9 : DRIVER_VERIFIER_IOMANAGER_VIOLATION

STOP Errors are usually the result of a hardware malfunction or device driver issue. It is also possible to receive a Blue Screen Error due to bad system memory, malfunctioning power supply, components overheating, or hardware overclocked beyond its specification. In older versions of the Windows OS you may also receive Blue Screen Errors due to incompatible DLL files.

Since the only option when receiving a Blue Screen Error is to reboot, any unsaved data is lost. With that in mind, it is very important to eliminate these errors to protect your data.

Basic Troubleshooting

Troubleshooting STOP Errors can be a difficult and time consuming process. Try these basic steps to fix your own Blue Scree Error. We hope it will help you avoid an expensive service call and provide a rewarding experience of solving the problem on your own.

Advanced Troubleshooting

The following details are for advanced users. These are provided for your convenience and may help those with advanced knowledge discover the root cause of their STOP Error.


Stop 0xC9: DRIVER_VERIFIER_IOMANAGER_VIOLATION

The DRIVER_VERIFIER_IOMANAGER_VIOLATION stop error code has a value of 0x000000C9. This is the stop error code code for all Driver Verifier I/O Verification violations.

Parameters

When Driver Verifier is active and I/O Verification is selected, various I/O violations will cause this stop error code to be issued. The following parameters will be displayed on the blue screen. Parameter 1 identifies the type of violation.

Parameter 1Parameter 2Parameter 3Parameter 4Cause of Error
0x01Address of IRP being freed0 0 The driver attempted to free an object whose type is not IO_TYPE_IRP.
0x02Address of IRP being freed0 0 The driver attempted to free an IRP that is still associated with a thread.
0x03Address of IRP being sent0 0 The driver passed IoCallDriver an IRP Type not equal to IRP_TYPE.
0x04Address of device object0 0 The driver passed IoCallDriver an invalid device object.
0x05Address of device object associated with offending driverIRQL before IoCallDriver IRQL after IoCallDriverThe IRQL changed during a call to the driver dispatch routine.
0x06IRP statusAddress of IRP being completed0 The driver called IoCompleteRequest with a status marked as pending (or equal to -1).
0x07Address of cancel routineAddress of IRP being completed0 The driver called IoCompleteRequest while its cancel routine was still set.
0x08Address of device objectIRP major function codeException status codeThe driver passed IoBuildAsynchronousFsdRequest an invalid buffer.
0x09Address of device objectI/O control codeException status codeThe driver passed IoBuildDeviceIoControlRequest an invalid buffer.
0x0AAddress of device object0 0 The driver passed IoInitializeTimer a device object with an already-initialized timer.
0x0CAddress of I/O status block0 0 The driver passed an I/O status block to an IRP, but this block is allocated on a stack which has already unwound past that point.
0x0DAddress of user event object0 0 The driver passed a user event to an IRP, but this event is allocated on a stack which has already unwound past that point.
0x0ECurrent IRQLAddress of IRP0 The driver called IoCompleteRequest with IRQL > DISPATCH_LEVEL.
0x0FAddress of the device object to which the IRP is being sentPointer to the IRPPointer to file objectThe driver sent a create request with a file object that has been closed, or that had its open canceled.

In addition to the errors mentioned in the previous table, there are a number of I/O Verification errors that will cause Driver Verifier to halt the system, but which are not actually stop error codes.

These errors cause messages to be displayed on the blue screen, in a crash dump file, and in a kernel debugger. These messages will appear differently in each of these locations. When these errors occur, the hexadecimal stop error code code 0xC9 and the stop error code string DRIVER_VERIFIER_IOMANAGER_VIOLATION do not appear on the blue screen or in the debugger, although they will appear in a crash dump file.

On the blue screen, the following data will be displayed:

  • The message IO SYSTEM VERIFICATION ERROR.
  • The message WDM DRIVER ERROR XXX, where XXX is a hexadecimal code representing the specific error. (See the table below for a list of the I/O error codes and their meanings.)
  • The name of the driver which caused the error.
  • The address in the driver's code where the error was detected (Parameter 2).
  • A pointer to the IRP (Parameter 3).
  • A pointer to the device object (Parameter 4).

If a kernel-mode crash dump has been enabled, the following information will appear in the crash dump file:

  • The message BugCheck 0xC9 (DRIVER_VERIFIER_IOMANAGER_VIOLATION).
  • The hexadecimal I/O error code. (See the table below for a list of the I/O error codes and their meanings.)
  • The address in the driver's code where the error was detected.
  • A pointer to the IRP.
  • A pointer to the device object.

If a kernel debugger is attached to the system which has caused this violation, the following information will be sent to the debugger:

  • The message WDM DRIVER ERROR, along with an assessment of the severity of the error.
  • The name of the driver which caused the error.
  • A descriptive string which explains the cause of this error. Often additional information is passed along, such as a pointer to the IRP. (See the table below for a list of these descriptive strings and what additional information is specified.)
  • A query for further action. Possible responses are b (break), i (ignore), z (zap), r (remove), or d (disable). Instructing the operating system to continue allows you to see what would happen "down the line" if this error had not occurred. Of course, this often will lead to additional stop error codes. The "zap" option will actually remove the breakpoint that caused this error to be discovered.

Note  No other stop error codes can be ignored in this manner. Only this kind of I/O Verification errors can be ignored, and even these errors can only be ignored if a kernel debugger is attached.

The following table lists those I/O Verification errors that can appear. In Windows 2000, these errors will only be displayed if I/O Verification is set to Level 2.

I/O Error CodeSeverityCause of Error
0x200UnknownThis code covers all unknown I/O Verification errors.
0x201Fatal errorA device is deleting itself while there is another device beneath it in the driver stack. This may be because the caller has forgotten to call IoDetachDevice first, or the lower driver may have incorrectly deleted itself.
0x202Fatal errorA driver has attempted to detach from a device object that is not attached to anything. This may occur if detach was called twice on the same device object. (Device object specified.)
0x203Fatal errorA driver has called IoCallDriver without setting the cancel routine in the IRP to NULL. (IRP specified.)
0x204Fatal errorThe caller has passed in NULL as a device object. This is fatal. (IRP specified.)
0x205Fatal errorThe caller is forwarding an IRP that is currently queued beneath it. The code handling IRPs returning STATUS_PENDING in this driver appears to be broken. (IRP specified.)
0x206Fatal errorThe caller has incorrectly forwarded an IRP (control field not zeroed). The driver should use IoCopyCurrentIrpStackLocationToNext or IoSkipCurrentIrpStackLocation. (IRP specified.)
0x207Fatal errorThe caller has manually copied the stack and has inadvertently copied the upper layer's completion routine. The driver should use IoCopyCurrentIrpStackLocationToNext. (IRP specified.)
0x208Fatal errorThis IRP is about to run out of stack locations. Someone may have forwarded this IRP from another stack. (IRP specified.)
0x209Fatal errorThe caller is completing an IRP that is currently queued beneath it. The code handling IRPs returning STATUS_PENDING in this driver appears to be broken. (IRP specified.)
0x20AFatal errorThe caller of IoFreeIrp is freeing an IRP that is still in use. (Original IRP and IRP in use specified.)
0x20BFatal errorThe caller of IoFreeIrp is freeing an IRP that is still in use. (IRP specified.)
0x20CFatal errorThe caller of IoFreeIrp is freeing an IRP that is still queued against a thread. (IRP specified.)
0x20DFatal errorThe caller of IoInitializeIrp has passed an IRP that was allocated with IoAllocateIrp. This is illegal and unnecessary, and has caused a quota leak. Check the documentation for IoReuseIrp if this IRP is being recycled.
0x20ENon-fatal error A PNP IRP has an invalid status. (Any PNP IRP must have its status initialized to STATUS_NOT_SUPPORTED.) (IRP specified.)
0x20FNon-fatal error A Power IRP has an invalid status. (Any Power IRP must have its status initialized to STATUS_NOT_SUPPORTED.) (IRP specified.)
0x210Non-fatal error A WMI IRP has an invalid status. (Any WMI IRP must have its status initialized to STATUS_NOT_SUPPORTED.) (IRP specified.)
0x211Non-fatal error The caller has forwarded an IRP while skipping a device object in the stack. The caller is probably sending IRPs to the PDO instead of to the device returned by IoAttachDeviceToDeviceStack. (IRP specified.)
0x212Non-fatal error The caller has trashed or has not properly copied the IRP's stack. (IRP specified.)
0x213Non-fatal error The caller has changed the status field of an IRP it does not understand. (IRP specified.)
0x214Non-fatal error The caller has changed the information field of an IRP it does not understand. (IRP specified.)
0x215Non-fatal error A non-successful non-STATUS_NOT_SUPPORTED IRP status for IRP_MJ_PNP is being passed down stack. (IRP specified.) Failed PNP IRPs must be completed.
0x216Non-fatal error The previously-set IRP_MJ_PNP status has been converted to STATUS_NOT_SUPPORTED. (IRP specified.)
0x217Non-fatal error The driver has not handled a required IRP. The driver must update the status of the IRP to indicate whether or not it has been handled. (IRP specified.)
0x218Non-fatal error The driver has responded to an IRP that is reserved for other device objects elsewhere in the stack. (IRP specified.)
0x219Non-fatal error A non-successful non-STATUS_NOT_SUPPORTED IRP status for IRP_MJ_POWER is being passed down stack. (IRP specified.) Failed POWER IRPs must be completed.
0x21ANon-fatal error The previously-set IRP_MJ_POWER status has been converted to STATUS_NOT_SUPPORTED. (IRP specified.)
0x21BNon-fatal error A driver has returned a suspicious status. This is probably due to an uninitialized variable bug in the driver. (IRP specified.)
0x21CWarningThe caller has copied the IRP stack but not set a completion routine. This is inefficient — use IoSkipCurrentIrpStackLocation instead. (IRP specified.)
0x21DFatal errorAn IRP dispatch handler has not properly detached from the stack below it upon receiving a remove IRP. (Device object, dispatch routine, and IRP specified.)
0x21EFatal errorAn IRP dispatch handler has not properly deleted its device object upon receiving a remove IRP. (Device object, dispatch routine, and IRP specified.)
0x21FNon-fatal error A driver has not filled out a dispatch routine for a required IRP major function. (IRP specified.)
0x220Non-fatal error IRP_MJ_SYSTEM_CONTROL has been completed by someone other than the ProviderId. This IRP should either have been completed earlier or should have been passed down. (IRP specified, along with the device object where it was targeted.)
0x221Fatal errorAn IRP dispatch handler for a PDO has deleted its device object, but the hardware has not been reported as missing in a bus relations query. (Device object, dispatch routine, and IRP specified.)
0x222Fatal errorA Bus Filter's IRP dispatch handler has detached upon receiving a remove IRP when the PDO is still alive. Bus Filters must clean up in FastIoDetach callbacks. (Device object, dispatch routine, and IRP specified.)
0x223Fatal errorAn IRP dispatch handler for a bus filter has deleted its device object, but the PDO is still present. Bus filters must clean up in FastIoDetach callbacks. (Device object, dispatch routine, and IRP specified.)
0x224Fatal errorAn IRP dispatch handler has returned a status that is inconsistent with the IRP's IoStatus.Status field. (Dispatch handler routine, IRP, IRP's IoStatus.Status, and returned Status specified.)
0x225Non-fatal error An IRP dispatch handler has returned a status that is illegal (0xFFFFFFFF). This is probably due to an uninitialized stack variable. To debug this error, use the ln (List Nearest Symbols) debugger command with the specified address.
0x226Fatal errorAn IRP dispatch handler has returned without passing down or completing this IRP, or someone forgot to return STATUS_PENDING. (IRP specified.)
0x227Fatal errorAn IRP completion routine is in pageable code. (This is never permitted.) (Routine and IRP specified.)
0x228Non-fatal error A driver's completion routine has not marked the IRP pending if the PendingReturned field was set in the IRP passed to it. This may cause Windows to hang, especially if an error is returned by the stack. (Routine and IRP specified.)
0x229Fatal errorA cancel routine has been set for an IRP that is currently being processed by drivers lower in the stack, possibly stomping their cancel routine. (Routine and IRP specified.)
0x22ANon-fatal error The physical device object (PDO) has not responded to a required IRP. (IRP specified.)
0x22BNon-fatal error The physical device object (PDO) has forgotten to fill out the device relation list with the PDO for the TargetDeviceRelation query. (IRP specified.)
0x22CFatal errorThe code implementing the TargetDeviceRelation query has not called ObReferenceObject on the PDO. (IRP specified.)
0x22DNon-fatal error The caller has completed a IRP_MJ_PNP it didn't understand instead of passing it down. (IRP specified.)
0x22ENon-fatal error The caller has completed a successful IRP_MJ_PNP instead of passing it down. (IRP specified.)
0x22FNon-fatal error The caller has completed an untouched IRP_MJ_PNP (instead of passing the IRP down), or non-PDO has failed the IRP using illegal value of STATUS_NOT_SUPPORTED. (IRP specified.)
0x230Non-fatal error The caller has completed an IRP_MJ_POWER it didn't understand instead of passing it down. (IRP specified.)
0x231Fatal errorThe caller has completed a successful IRP_MJ_POWER instead of passing it down. (IRP specified.)
0x232Non-fatal error The caller has completed an untouched IRP_MJ_POWER (instead of passing the IRP down), or non-PDO has failed the IRP using illegal value of STATUS_NOT_SUPPORTED. (IRP specified.)
0x233Non-fatal error The version field of the query capabilities structure in a query capabilities IRP was not properly initialized. (IRP specified.)
0x234Non-fatal error The size field of the query capabilities structure in a query capabilities IRP was not properly initialized. (IRP specified.)
0x235Non-fatal error The address field of the query capabilities structure in a query capabilities IRP was not properly initialized to -1. (IRP specified.)
0x236Non-fatal error The UI Number field of the query capabilities structure in a query capabilities IRP was not properly initialized to -1. (IRP specified.)
0x237Fatal errorA driver has sent an IRP that is restricted for system use only. (IRP specified.)
0x238WarningThe caller of IoInitializeIrp has passed an IRP that was allocated with IoAllocateIrp. This is illegal, unnecessary, and negatively impacts performance in normal use. If this IRP is being recycled, see IoReuseIrp.
0x239WarningThe caller of IoCompleteRequest is completing an IRP that has never been forwarded via a call to IoCallDriver or PoCallDriver. This may be a bug. (IRP specified.)
0x23AFatal errorA driver has forwarded an IRP at an IRQL that is illegal for this major code. (IRP specified.)
0x23BNon-fatal error The caller has changed the status field of an IRP it does not understand. (IRP specified.)

The following table lists additional I/O Verification errors that can appear in Windows XP and later. Some of these errors will only be revealed if Enhanced I/O Verification is activated.

I/O Error CodeSeverityCause of Error
0x23CFatal errorA driver has completed an IRP without setting the cancel routine in the IRP to NULL. (IRP specified.)
0x23DNon-fatal error A driver has returned STATUS_PENDING but did not mark the IRP pending via a call to IoMarkIrpPending. (IRP specified.)
0x23ENon-fatal error A driver has marked an IRP pending but didn't return STATUS_PENDING. (IRP specified.)
0x23FFatal errorA driver has not inherited the DO_POWER_PAGABLE bit from the stack it has attached to. (Device object specified.)
0x240Fatal errorA driver is attempting to delete a device object that has already been deleted via a prior call to IoDeleteDevice.
0x241Fatal errorA driver has detached its device object during a surprise remove IRP. (IRP and device object specified.)
0x242Fatal errorA driver has deleted its device object during a surprise remove IRP. (IRP and device object specified.)
0x243Fatal errorA driver has failed to clear the DO_DEVICE_INITIALIZING flag at the end of AddDevice. (Device object specified.)
0x244Fatal errorA driver has not copied either the DO_BUFFERED_IO or the DO_DIRECT_IO flag from the device object it is attaching to. (Device object specified.)
0x245Fatal errorA driver has set both the DO_BUFFERED_IO and the DO_DIRECT_IO flags. These flags are mutually exclusive. (Device object specified.)
0x246Fatal errorA driver has failed to copy the DeviceType field from the device object it is attaching to. (Device object specified.)
0x247Fatal errorA driver has failed an IRP that cannot legally be failed. (IRP specified.)
0x248Fatal errorA driver has added a device object that is not a PDO to a device relations query. (IRP and device object specified.)
0x249Non-fatal error A driver has enumerated two child PDOs that returned identical Device IDs. (Both device objects specified.)
0x24AFatal errorA driver has mistakenly called a file I/O function with IRQL not equal to PASSIVE_LEVEL.
0x24BFatal errorA driver has completed an IRP_MN_QUERY_DEVICE_RELATIONS request of type TargetDeviceRelation as successful, but did not properly fill out the request or forward the IRP to the underlying hardware stack. (Device object specified.)
0x24CNon-fatal error A driver has returned STATUS_PENDING but did not mark the IRP pending by a call to IoMarkIrpPending. (IRP specified.)
0x24DFatal errorA driver has passed an invalid device object to a function that requires a PDO. (Device object specified.)

Cause

See the description of each code in the Parameters section for a description of the cause.

Resolving the Problem

This stop error code can only occur when Driver Verifier has been instructed to monitor one or more drivers. If you did not intend to use Driver Verifier, you should deactivate it. You might consider removing the driver which caused this problem as well.

If you are the driver writer, use the information obtained through this stop error code to fix the bugs in your code.

For full details, see Driver Verifier.

Helpful Tools

The following products are free to try. We have found them to be of the highest quality and value. They have been extremely useful in our own pc troubleshooting and maintainance and we highly recommend trying them out for yourself.


Anti-Malware Pro

With a lightning fast free scan and the largest authentic spyware detection database we have seen, Anti-Malware Pro finds and removes threats to your PC stability and security. Download Anti-Malware Pro


DriverFinder

DriverFinder will scan your system for driver and software updates. Its easy to use interface makes keeping your drivers updated quick and simple. They will even send you an email notification when new driver updates are available for your system! It doesn't get any more convenient than this. Download DriverFinder





Browse STOP Error Codes:





Is a STOP error code missing?

Help us to make errorDecoder.com the best resource we possibly can by submitting you very own STOP error code details. If you have detailed information on any STOP error code please let us know by visiting the following link.

Submit Error Details Form

DRIVER_VERIFIER_IOMANAGER_VIOLATION    |    Fix Error Code 0x000000C9    |    Fix Windows Registry Errors