ExpWin32CloseProcedure

VOID __stdcall ExpWin32CloseProcedure(
        _EPROCESS *Process,
        PVOID Object,
        UINT64 ProcessHandleCount,
        UINT64 SystemHandleCount){
  unsigned __int64 v4; 
  POBJECT_TYPE *v5; 
  INT64 v6; 
  __int64 v7[2]; 
  int v8; 
  int v9; 
  UINT64 v10; 
  LODWORD(v10) = *(_DWORD *)Object;
  v4 = (unsigned __int8)*((char *)Object - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)Object - 48) >> 8);
  v7[0] = (__int64)Process;
  v7[1] = (__int64)Object;
  v8 = ProcessHandleCount;
  v9 = SystemHandleCount;
  v5 = (POBJECT_TYPE *)ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ v4];
  if( v5 == (POBJECT_TYPE *)ExActivationObjectType )
  {
    v6 = 39i64;
  }
  else if( v5 == (POBJECT_TYPE *)ExCoreMessagingObjectType )
  {
    v6 = 35i64;
  }
  else if( v5 == (POBJECT_TYPE *)ExRawInputManagerObjectType )
  {
    v6 = 29i64;
  }
  else if( v5 == (POBJECT_TYPE *)ExCompositionObjectType )
  {
    v6 = 20i64;
  }
  else if( v5 == ExDesktopObjectType )
  {
    v6 = 10i64;
  }
  else
  {
    if( v5 != (POBJECT_TYPE *)ExWindowStationObjectType )
      return;
    v6 = 13i64;
  }
  PsInvokeWin32Callout(v6, v7, 1i64, &v10);
}

Referenced by:

No references.