KeThawExecution
VOID __stdcall KeThawExecution(UINT8 Enable){
char v2;
unsigned __int64 v3;
unsigned __int64 v4;
unsigned __int64 v5;
v2 = 0;
if( (KiFreezeFlag & 8) == 0 )
v2 = KdPortLocked;
((void(__fastcall *)(_QWORD, _QWORD))off_140C00738[0])(0i64, 0i64);
if( !PoAllProcIntrDisabled )
{
KUSER_SHARED_DATA.BaselineInterruptTimeQpc = KeQueryPerformanceCounter(0i64).QuadPart;
KiInterruptTimeErrorAccumulator = 0i64;
}
KiSendThawExecution(1);
v3 = (unsigned __int8)KiOldIrql;
KiFreezeFlag = 0;
KxReleaseSpinLock(&KiFreezeExecutionLock);
if( v2 )
KxReleaseSpinLock(&KdDebuggerLock);
v4 = __readcr4();
if( (v4 & 0x20080) != 0 )
{
__writecr4(v4 ^ 0x80);
__writecr4(v4);
}
else
{
v5 = __readcr3();
__writecr3(v5);
}
KiEndDebugAccumulation(KeGetCurrentPrcb());
__writecr8(v3);
if( Enable )
_enable();
}Referenced by:
ExpWaitForBootDevices
KdExitDebugger