KiAcquireReleaseThreadLock
VOID __stdcall KiAcquireReleaseThreadLock(_ETHREAD *Thread){
unsigned __int8 CurrentIrql;
int v3[14];
UINT64 SpinCount;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
_InterlockedOr(v3, 0);
if( *((_QWORD *)Thread + 8) )
{
LODWORD(SpinCount) = 0;
while( _interlockedbittestandset64((volatile signed __int32 *)Thread + 16, 0i64) )
{
do
KeYieldProcessorEx(&SpinCount);
while( *((_QWORD *)Thread + 8) );
}
KiReleaseThreadLockSafe((INT64)Thread);
}
__writecr8(CurrentIrql);
}Referenced by:
KeRundownApcQueues