MmSetCommitReleaseEligibility
NTSTATUS __stdcall MmSetCommitReleaseEligibility(_EPROCESS *Process, UINT64 Eligible){
int v2;
int v3;
_MMSUPPORT_SHARED *SharedVm;
UINT8 v6;
_MMSUPPORT_FLAGS Flags;
NTSTATUS v8;
__int8 v9;
_KAPC_STATE ApcState;
v2 = 0;
memset(&ApcState, 0, sizeof(ApcState));
v3 = Eligible;
if( KeGetCurrentThread()->ApcState.Process != Process )
{
v2 = 1;
KiStackAttachProcess(Process, 0i64, &ApcState);
}
SharedVm = MiGetSharedVm(&Process->Vm.Instance);
v6 = ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
SharedVm->GoodCitizenWaiting = 0;
Flags = Process->Vm.Instance.Flags;
if( (Process->Flags & 0x20) != 0 )
{
v8 = -1073741558;
}
else
{
if( v3 )
v9 = Flags.$2436257948A9E417F8C1432C685A007E::$56A022E0416FA8F0D143F219D5D8FA21::_bf_0 & 0x9F | 0x20;
else
v9 = Flags.$2436257948A9E417F8C1432C685A007E::$56A022E0416FA8F0D143F219D5D8FA21::_bf_0 & 0x9F;
Process->Vm.Instance.Flags._bf_0 = v9;
v8 = 0;
}
MiUnlockWorkingSetExclusive(&Process->Vm.Instance, v6);
if( v2 )
KiUnstackDetachProcess(&ApcState, 0i64);
return v8;
}Referenced by:
NtSetInformationProcess