ExpConvertFastResourceExclusiveToShared
INT64 __fastcall ExpConvertFastResourceExclusiveToShared(INT64 a1, INT64 a2, UINT8 *a3){
void *v3;
unsigned __int8 CurrentIrql;
__int64 v7;
INT64 result;
_BYTE LockHandle[56];
__int64 MultiSz;
*(_QWORD *)&LockHandle[16] = 0i64;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
*(_QWORD *)LockHandle = 0i64;
*(_QWORD *)&LockHandle[8] = a1 + 96;
KxAcquireQueuedSpinLock((PIO_WORKITEM)LockHandle, (PIO_WORKITEM_ROUTINE)(a1 + 96), (WORK_QUEUE_TYPE)a3, v3);
*(_WORD *)(a1 + 26) &= ~0x80u;
v7 = *(_QWORD *)(a1 + 32);
*(_QWORD *)(a1 + 32) = 0i64;
MultiSz = v7;
LODWORD(v7) = *(_DWORD *)(a1 + 72);
*(_DWORD *)(a1 + 72) = 0;
*(_DWORD *)(a1 + 64) += v7;
KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)LockHandle);
KeWakeWaitChain((const WCHAR *)&MultiSz, 0i64, 0);
*(_BYTE *)(a2 + 17) &= ~4u;
result = CurrentIrql;
__writecr8(CurrentIrql);
return result;
}Referenced by:
ExConvertFastResourceExclusiveToShared
ExpFastResourceLegacyConvertExclusiveToShared