HalpBlkPoBusyWait
INT64 __fastcall HalpBlkPoBusyWait(UINT64 P2, UINT64 P3, UINT64 P4){
ULONG_PTR v3;
ULONG_PTR v5;
__int64 v6;
INT64 result;
v3 = (unsigned int)P3;
v5 = (unsigned int)P2;
v6 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
while( 1 )
{
result = (unsigned int)_InterlockedCompareExchange((volatile signed __int32 *)(P4 + 8), 0, 0);
if( !(_DWORD)result )
break;
HalpBlkWdFatalExceptionCheck((PVOID)(unsigned int)v3);
if( (unsigned __int64)(*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - v6) >= 0x989680 )
KeBugCheckEx(0x1DAu, 6ui64, v5, v3, P4);
}
return result;
}Referenced by:
HalpBlkPoReadPerfIoPort
HalpBlkPoReadPerfMsr
HalpBlkPoRegisterIdleState
HalpBlkPoWritePerfIoPort
HalpBlkPoWritePerfMsr