Windows Driver Kit: Driver Development Tools
Bug Check 0xC1: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
The SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION bug check has a value of 0x000000C1. This indicates that the driver wrote to an invalid section of the special pool.
Parameters
The following parameters are displayed on the blue screen. Parameter 4 indicates the type of violation.
| Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Cause of Error |
| Address that the driver tried to free | Reserved | 0 | 0x20 | A driver attempted to free pool which was not allocated. |
| Address that the driver tried to free | Bytes requested | Bytes calculated (actually given to the caller) | 0x21, 0x22 | A driver attempted to free a bad address. |
| Address that the driver tried to free | Address where bits are corrupted | Reserved | 0x23 | A driver freed an address, but nearby bytes within the same page have been corrupted. |
| Address that the driver tried to free | Address where bits are corrupted | Reserved | 0x24 | A driver freed an address, but bytes occurring after the end of the allocation have been overwritten. |
| Current IRQL | Pool type | Number of bytes | 0x30 | A driver attempted to allocate pool at an incorrect IRQL. |
| Current IRQL | Pool type | Address that the driver tried to free | 0x31 | A driver attempted to free pool at an incorrect IRQL. |
| Address that the driver tried to free | Address where one bit is corrupted | Reserved | 0x32 | A driver freed an address, but nearby bytes within the same page have a single bit error. |
The _POOL_TYPE codes are enumerated in ntddk.h. In particular, zero indicates nonpaged pool and one indicates paged pool.
Cause
A driver has written to an invalid section of the special pool.
Resolving the Problem
Obtain a backtrace of the current thread. This backtrace will usually reveal the source of the error.
For information about the special pool, see Special Pool.