KeDeregisterBugCheckReasonCallback
VOID __stdcall KeDeregisterBugCheckReasonCallback(_KBUGCHECK_REASON_CALLBACK_RECORD *CallbackRecord){
unsigned __int8 CurrentIrql;
bool v3;
_LIST_ENTRY *Flink;
_LIST_ENTRY *Blink;
CurrentIrql = KeGetCurrentIrql();
__writecr8(0xFui64);
KxAcquireSpinLock(&KeBugCheckCallbackLock);
if( CallbackRecord->State == 1 )
{
v3 = CallbackRecord->Reason == 1023;
CallbackRecord->State = 0;
if( v3 )
_InterlockedAdd(&KiRecoveryCallbackCount, 0xFFFFFFFF);
Flink = CallbackRecord->Entry.Flink;
Blink = CallbackRecord->Entry.Blink;
if( (_KBUGCHECK_REASON_CALLBACK_RECORD *)CallbackRecord->Entry.Flink->Blink != CallbackRecord
|| (_KBUGCHECK_REASON_CALLBACK_RECORD *)Blink->Flink != CallbackRecord )
{
__fastfail(3u);
}
Blink->Flink = Flink;
Flink->Blink = Blink;
}
KxReleaseSpinLock(&KeBugCheckCallbackLock);
__writecr8(CurrentIrql);
}Referenced by:
No references.