EtwpUpdatePidFilterData

NTSTATUS __stdcall EtwpUpdatePidFilterData(
        _ETW_FILTER_HEADER *GuidFilterData,
        _EVENT_FILTER_DESCRIPTOR *FilterData,
        UINT8 Remove){
  NTSTATUS v3; 
  unsigned int v6; 
  void *PidFilter; 
  v3 = 0;
  if( Remove )
  {
    ExFreePoolWithTag(GuidFilterData->PidFilter, 0);
    GuidFilterData->PidFilter = 0i64;
  }
  else
  {
    v6 = FilterData->Size >> 2;
    if( v6 <= 8 )
    {
      PidFilter = GuidFilterData->PidFilter;
      if( !PidFilter )
      {
        PidFilter = ExAllocatePoolWithTag(PagedPool, 0x24ui64, 0x46777445ui64);
        if( !PidFilter )
          return -1073741801;
        GuidFilterData->PidFilter = (_ETW_FILTER_PID *)PidFilter;
      }
      *(_DWORD *)PidFilter = v6;
      memmove((UINT8 *)PidFilter + 4, (UINT8 *)FilterData->Ptr, 4i64 * v6);
      return v3;
    }
    return -1073741811;
  }
  return v3;
}

Referenced by:

EtwpUpdateFilterData