PspCreateActivityReference
NTSTATUS __stdcall PspCreateActivityReference(PVOID Object, INT64 a2){
UINT64 v2;
NTSTATUS result;
_QWORD *v6;
VOID *v7;
VOID *v8;
UINT64 ObjectBodySize;
PVOID *Handle;
UINT64 NonPagedPoolCharge;
_OBJECT_ATTRIBUTES v12;
UINT64 Tag;
memset(&v12.Length + 1, 0, 20);
memset(&v12.Attributes + 1, 0, 20);
LOBYTE(v2) = KeGetCurrentThread()->PreviousMode;
Tag = 0i64;
v12.Length = 48;
LODWORD(NonPagedPoolCharge) = 8;
LODWORD(Handle) = 0;
v12.Attributes = 32;
LODWORD(ObjectBodySize) = 8;
result = ObCreateObjectEx(
0i64,
PspActivityReferenceObjectType,
&v12,
v2,
v7,
ObjectBodySize,
(UINT64)Handle,
NonPagedPoolCharge,
(VOID **)&Tag,
0i64);
if( result >= 0 )
{
v6 = (_QWORD *)Tag;
LODWORD(v8) = 0;
*v6 = PsChargeProcessWakeCounter(Object, 0i64, PsWakeReasonActivityReference, Tag);
return ObInsertObjectEx(v6, 0i64, 0xF0000ui64, 0i64, (UINT64)v8, 0i64, (VOID **)a2);
}
return result;
}Referenced by:
NtAcquireProcessActivityReference