NtAssignProcessToJobObject

NTSTATUS __stdcall NtAssignProcessToJobObject(PVOID JobHandle, PVOID ProcessHandle){
  __int64 v2; 
  KPROCESSOR_MODE v4; 
  NTSTATUS v5; 
  struct _DMA_ADAPTER *v6; 
  __int64 v7; 
  PVOID v8; 
  PVOID Object; 
  PADAPTER_OBJECT DmaAdapter; 
  v2 = 0i64;
  Object = 0i64;
  v4 = *((_BYTE *)KeGetCurrentThread() + 562);
  DmaAdapter = 0i64;
  v5 = ObReferenceObjectByHandle(JobHandle, 1u, (POBJECT_TYPE)PsJobType, v4, (PVOID *)&DmaAdapter, 0i64);
  if( v5 >= 0 )
  {
    if( ProcessHandle == (PVOID)-7i64 )
    {
      v2 = *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1296i64);
      goto LABEL_4;
    }
    v5 = ObReferenceObjectByHandleWithTag(
           ProcessHandle,
           0x101u,
           (POBJECT_TYPE)PsProcessType,
           v4,
           0x624A7350u,
           &Object,
           0i64);
    if( v5 >= 0 )
    {
LABEL_4:
      v6 = DmaAdapter;
      v7 = v2;
      v8 = Object;
      v5 = PsAssignProcessToJobObject((ULONG_PTR)DmaAdapter, Object, v7);
      goto LABEL_5;
    }
  }
  v8 = Object;
  v6 = DmaAdapter;
LABEL_5:
  if( v8 )
    ObfDereferenceObjectWithTag(v8, 0x624A7350ui64);
  if( v6 )
    HalPutDmaAdapter(v6);
  return v5;
}

Referenced by:

No references.