IoAcquireCancelSpinLock
VOID *__stdcall IoAcquireCancelSpinLock(PKIRQL Irql){
unsigned __int8 CurrentIrql;
VOID *result;
void *ArbitraryUserPointer;
volatile __int64 *v5;
INT64 v6;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
result = (VOID *)(unsigned int)KiIrqlFlags;
ArbitraryUserPointer = KeGetPcr()->NtTib.ArbitraryUserPointer;
v5 = (volatile __int64 *)*((_QWORD *)ArbitraryUserPointer + 15);
v6 = (INT64)ArbitraryUserPointer + 112;
if( _InterlockedExchange64(v5, v6) )
KxWaitForLockOwnerShip(v6);
*Irql = CurrentIrql;
return result;
}Referenced by:
FsRtlpRemoveAndCompleteRHIrp