PspSetProcessTimerDelayForWin32
NTSTATUS __stdcall PspSetProcessTimerDelayForWin32(_EPROCESS *Process){
_EX_PUSH_LOCK *p_ProcessLock;
unsigned __int64 All;
_EPROCESS *Parameters;
int v6;
int v7;
UINT64 SessionId;
p_ProcessLock = &Process->ProcessLock;
ExAcquirePushLockSharedEx(&Process->ProcessLock, 0i64);
if( Process->Win32Process )
{
if( _InterlockedCompareExchange64(&p_ProcessLock->_bf_0, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(p_ProcessLock);
KeAbPostRelease(p_ProcessLock);
All = Process->ProcessTimerDelay.All;
LODWORD(SessionId) = MmGetSessionIdEx(Process);
Parameters = Process;
v6 = All & 0x3FFFFFFF;
v7 = (All >> 30) & 0x3FFFFFFF;
return PsInvokeWin32Callout(
Win32CoreMessagingObjectOpenCallout|Win32DesktopOpenCallout,
&Parameters,
PsWin32SessionAttachSingle,
&SessionId);
}
else
{
if( _InterlockedCompareExchange64(&p_ProcessLock->_bf_0, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(p_ProcessLock);
KeAbPostRelease(p_ProcessLock);
return 0;
}
}Referenced by:
PspApplyTimerDelayProcess