MiDeleteVadBitmap
VOID __stdcall MiDeleteVadBitmap(_EPROCESS *Process){
_RTL_BALANCED_NODE *Root;
_MMWSL_INSTANCE *VmWorkingSetList;
unsigned __int64 LockedEntries;
VOID *v5;
_EPROCESS *v6;
_MI_PARTITION *ProcessPartition;
char *v8;
PKINTERRUPT_ROUTINE **p_LockedEntries;
__int64 v10;
_MI_PARTITION *v11;
__int64 v12;
UINT64 v13;
UINT64 v14;
Root = Process->CloneRoot.Root;
if( Root )
KeBugCheckEx(0x1Au, (PVOID)0x3455, Process, Root, 0i64);
VmWorkingSetList = Process->Vm.Instance.VmWorkingSetList;
if( VmWorkingSetList )
{
LockedEntries = VmWorkingSetList[6].LockedEntries;
MiHyperSpaceSize();
LOBYTE(v5) = 17;
MiDeletePagablePteRange((_EPROCESS *)&Process->Vm, v5);
ProcessPartition = MiGetProcessPartition(Process, v6);
v8 = (char *)VmWorkingSetList[7].NextPteToAge + LockedEntries;
p_LockedEntries = (PKINTERRUPT_ROUTINE **)&VmWorkingSetList[14].LockedEntries;
v10 = 0i64;
v11 = ProcessPartition;
v12 = 2i64;
do
{
v10 += (__int64)*p_LockedEntries++;
--v12;
}
while( v12 );
v13 = (UINT64)&v8[v10];
if( v13 )
MiReturnFullProcessCharges((ULONG_PTR)Process, v13);
if( v13 )
MiReturnCommit(v11, v13);
HalSystemVectorDispatchEntry(v10, p_LockedEntries, (PKINTERRUPT_ROUTINE *)v12);
if( Process->Vm.Shared.ChargedWslePages )
{
MiUpdateChargedWsles((INT64)&Process->Vm);
MiReturnFullProcessCommitment(Process, v14);
}
}
}Referenced by:
MiDeleteFinalPageTables