VfDeadlockDeleteMemoryRange
VOID __fastcall VfDeadlockDeleteMemoryRange(VOID *Address, UINT64 Size){
UINT8 *v4;
UINT8 *v5;
UINT64 v6;
__int64 v7;
UINT8 *v8;
if( (unsigned int)ViDeadlockCanProceed(0i64, (_VI_DEADLOCK_RESOURCE_TYPE)Size) )
{
v4 = (UINT8 *)Address + Size;
v5 = (UINT8 *)Address;
v6 = (((unsigned __int16)Address & 0xFFF) + Size + 4095) >> 12;
if( (_DWORD)v6 )
{
v7 = (unsigned int)v6;
do
{
v8 = v4;
if( v5 + 4096 <= v4 )
v8 = v5 + 4096;
ViDeadlockRemoveMemoryRangeResources(v5, v8, (UINT8 *)Address, v4);
ViDeadlockRemoveMemoryRangeThreads(v5, v8, (UINT8 *)Address, v4);
v5 = v8;
--v7;
}
while( v7 );
}
}
}Referenced by:
VfDriverUnloadImage
VfFreeMemoryNotification
VfFreePoolNotification