A cancel routine is responsible to release the cancel spinlock. Use IoReleaseCancelSpinLock for that.
VOID PtDriverCancelIRP(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp )
{
UNREFERENCED_PARAMETER(DeviceObject);
KdPrint(( "[WENZ] User Message Cancel Irp....\n" ));
if ( Irp == PeddingIRP)
PeddingIRP = NULL;
IoReleaseCancelSpinLock(); // release the cancel spinlock
Irp->IoStatus.Status = STATUS_CANCELLED;
Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp,IO_NO_INCREMENT);
}