Bug Check 0xC7: TIMER_OR_DPC_INVALID

The TIMER_OR_DPC_INVALID bug check has a value of 0x000000C7. This is issued if a kernel timer or delayed procedure call (DPC) is found somewhere in memory where it is not permitted.

Important

This article is for programmers. If you're a customer who has received a blue screen error code while using your computer, see Troubleshoot blue screen errors.

TIMER_OR_DPC_INVALID Parameters

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Cause of error

0x0

Address of the timer object

Start of memory range being checked

End of memory range being checked

The timer object was found in a block of memory where a timer object is not permitted. .

0x1

Address of the DPC object

Start of memory range being checked

End of memory range being checked

The DPC object was found in a block of memory where a DPC object is not permitted.

0x2

Address of the DPC routine

Start of memory range being checked

End of memory range being checked

The DPC routine was found in a block of memory where a DPC object is not permitted.

0x3

Address of the DPC object

Processor number

Number of processors in the system

The processor number for the DPC object is not correct.

0x4

Address of the DPC routine

The thread's APC disable count before the kernel calls the DPC routine

The thread's APC disable count after the DPC routine is called

The thread's APC disable count was changed during DPC routine execution.

The APC disable count is decremented each time a driver calls KeEnterCriticalRegion, FsRtlEnterFileSystem, or acquires a mutex.

The APC disable count is incremented each time a driver calls KeLeaveCriticalRegion, KeReleaseMutex, or FsRtlExitFileSystem.

0x5

Address of the DPC routine

The thread's APC disable count before the kernel calls the DPC routine

The thread's APC disable count after the DPC routine is called

The thread's APC disable count was changed during the execution of timer DPC routine.

The APC disable count is decremented each time a driver calls KeEnterCriticalRegion, FsRtlEnterFileSystem, or acquires a mutex.

The APC disable count is incremented each time a driver calls KeLeaveCriticalRegion, KeReleaseMutex, or FsRtlExitFileSystem.

Cause

This condition is usually caused by a driver failing to cancel a timer or DPC before freeing the memory where it resides.

Resolution

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

If you are a system administrator, you should unload the driver if the problem persists.