RtlpCtContextInit

INT64 __fastcall RtlpCtContextInit(INT64 *a1, INT64 a2){
  unsigned int v2; 
  VOID *PoolWithTag; 
  struct _EX_RUNDOWN_REF **v5; 
  int v6; 
  *a1 = 0i64;
  v2 = a2;
  PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x18ui64, 0x67744364ui64);
  v5 = (struct _EX_RUNDOWN_REF **)PoolWithTag;
  if( PoolWithTag )
  {
    *(_OWORD *)PoolWithTag = 0i64;
    *((_QWORD *)PoolWithTag + 2) = 0i64;
    v6 = RtlpCtInitializeNotificationEvent((KEVENT **)PoolWithTag + 2);
    if( v6 < 0
      || (v6 = RtlpCtInitializeWorkItem((CHAR **)v5, (INT64)v5), v6 < 0)
      || (v6 = ExSubscribeWnfStateChange(
                 v5 + 1,
                 (INT64 *)&WNF_SEB_DEV_MNF_CUSTOM_NOTIFICATION_RECEIVED,
                 8i64,
                 v2,
                 (INT64)RtlpRtlpCtSelfSubscribeCallback,
                 (INT64)v5),
          v6 < 0) )
    {
      RtlpCtContextFree(v5);
    }
    else
    {
      *a1 = (INT64)v5;
    }
  }
  else
  {
    return(unsigned int)-1073741670;
  }
  return(unsigned int)v6;
}

Referenced by:

No references.