MiCopyOnWriteCheckConditions
VOID __fastcall MiCopyOnWriteCheckConditions(INT64 a1, INT64 a2){
_ETHREAD *CurrentThread;
__int64 v3;
_ETHREAD *v4;
if( (_DWORD)a2 == -1073740748 )
{
if( (*(_BYTE *)(a1 + 184) & 7) == 0 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v3 = *((_QWORD *)CurrentThread + 23);
v4 = *(_ETHREAD **)(v3 + 1248);
if( v4 )
{
if( v4 != CurrentThread )
{
--*((_WORD *)CurrentThread + 243);
ExAcquirePushLockExclusiveEx(v3 + 1224, 0i64);
*((_BYTE *)CurrentThread + 1304) |= 1u;
UNLOCK_ADDRESS_SPACE((__int64)CurrentThread, v3);
}
}
}
}
else if( (_DWORD)a2 == -1073741801 && KeGetCurrentIrql() < 2u && (*((_DWORD *)KeGetCurrentThread() + 325) & 0xC) == 0 )
{
MiWaitForFreePage(*(_MI_PARTITION **)(qword_140C4E388 + 8i64 * *(unsigned __int16 *)(a1 + 174)), a2);
}
}Referenced by:
MiCopyToUserVa
MiLockAweVadsShared
MiLockCode
MiLockDriverPageRange
MiLockPagedAddress
MiMakeProtoPrivate
MiPrepareImagePagesForHotPatch
MiProbeLeafPteAccess
MiSetProtectionOnSection
MiSplitPrivatePage
MiSplitReducedCommitClonePage
MiSystemFault
MiWalkVaRange
MmAccessFault
MmProtectPool
MmReplaceImportEntry