Repair Windows Error 0x000000E6    |    STOP 0x000000E6    |    Fix Windows Registry Errors


STOP 0x000000E6 : DRIVER_VERIFIER_DMA_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 0xE6: DRIVER_VERIFIER_DMA_VIOLATION

The DRIVER_VERIFIER_DMA_VIOLATION stop error code has a value of 0x000000E6. This is the stop error code code for all Driver Verifier DMA Verification violations.

Parameters

The following parameters are displayed on the blue screen. Parameter 1 is the only parameter of interest. This parameter identifies the exact violation. If a debugger is attached, an informative message is displayed in the debugger.

Parameter 1Cause of Error and Debugger Message
0x00This code can represent two kinds of errors:

1. The driver tried to flush too many bytes to the end of the map register file. The number of bytes permitted and the number of bytes attempted are displayed.

2. Windows has run out of contiguous map registers. The number of map registers needed and the largest block of contiguous map registers is displayed.

0x01The performance counter has decreased. The old and new values of the counter are displayed.
0x02The performance counter has increased too fast. The counter value is displayed in the debugger.
0x03The driver freed too many DMA common buffers. Usually this means it freed the same buffer two times.
0x04The driver freed too many DMA adapter channels. Usually this means it freed the same adapter channel two times.
0x05The driver freed too many DMA map registers. Usually this means it freed the same map register two times. The number of active map registers is displayed.
0x06The driver freed too many DMA scatter/gather lists. Usually this means it freed the same scatter/gather list two times. The number of lists allocated and the number of lists freed is displayed.
0x07The driver tried to release the adapter without first freeing all its common buffers. The adapter address and the number of remaining buffers is displayed.
0x08The driver tried to release the adapter without first freeing all adapter channels, common buffers, or scatter/gather lists. The adapter address and the number of remaining items is displayed.
0x09The driver tried to release the adapter without first freeing all map registers. The adapter address and the number of remaining map registers is displayed.
0x0AThe driver tried to release the adapter without first freeing all its scatter/gather lists. The adapter address and the number of remaining scatter/gather lists is displayed.
0x0BHV_TOO_MANY_ADAPTER_CHANNELSThe driver has allocated too many adapter channels at the same time. . (Only one adapter channel is permitted per adapter.)
0x0CThe driver tried to allocate too many map registers at the same time. The number requested and the number allowed are displayed.
0x0DThe driver did not flush its adapter buffers. The number of bytes that the driver tried to map and the maximum number of bytes allowed are displayed.
0x0EThe driver tried a DMA transfer without locking the buffer. The buffer in question was in paged memory. The address of the MDL is displayed.
0x0FThe driver or the hardware wrote outside its allocated DMA buffer. The nature of the error (overrun or underrun) is displayed, as well as the relevant addresses.
0x10The driver tried to free its map registers while some were still mapped. The number of map registers still mapped is displayed.
0x11The driver has too many outstanding reference counts for the adapter. The number of reference counts and the adapter address are displayed.
0x13The driver called a DMA routine at an improper IRQL. The required IRQL and the actual IRQL are displayed.
0x14The driver called a DMA routine at an improper IRQL. The required IRQL and the actual IRQL are displayed.
0x15The driver tried to allocate too many map registers. The number requested and the number allowed are displayed.
0x16The driver tried to flush a buffer that is not mapped. The address of the buffer is displayed.
0x18The driver tried a DMA operation by using an adapter that was already released and no longer exists. The adapter address is displayed.
0x19The driver passed a null DMA_ADAPTER value to a HAL routine.
0x1BThe driver passed an address and MDL to a HAL routine. However, this address is not within the bounds of this MDL. The address passed and the address of the MDL are displayed.
0x1DThe driver tried to map an address range that was already mapped. The address range and the current mapping for that range are displayed.
0x1EThe driver called HalGetAdapter. This function is obsolete — you must use IoGetDmaAdapter instead.
0x1FHV_BAD_MDLThe driver referenced an invalid system address — either before the first MDL, or after the end of the first MDL, or by using a transfer length that is longer than the MDL buffer and crosses a page boundary within the MDL. . Either the invalid address and the first MDL address, or the MDL address and the extra transfer length are displayed.
0x20The driver tried to flush a map register that hasn't been mapped. The map register base, flushing address, and MDL are displayed.
0x21The driver tried to map a zero-length buffer for transfer.

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 also consider removing the driver that caused this problem.

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

The Driver Verifier DMA Verification option is only available in Windows XP and later versions. 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_DMA_VIOLATION    |    Repair Windows Error 0x000000E6    |    STOP 0x000000E6