AlpcpEnumerateResourcesPort

INT64 __fastcall AlpcpEnumerateResourcesPort(INT64 a1, INT64 a2, INT64 a3, VOID *a4){
  INT64 *v4; 
  __int64 **v5; 
  NTSTATUS v7; 
  __int64 *i; 
  v4 = (INT64 *)(a1 + 328);
  v5 = (__int64 **)(a1 + 336);
  v7 = 0;
  ExAcquirePushLockSharedEx(a1 + 328, 0i64);
  for( i = *v5; i != (__int64 *)v5; i = (__int64 *)*i )
  {
    if( *((_BYTE *)i + 17) == 6 )
    {
      v7 = AlpcpViewSearchCallbackFunction(i + 6, a4);
      if( v7 < 0 )
        break;
    }
  }
  if( _InterlockedCompareExchange64(v4, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared(v4);
  KeAbPostRelease(v4);
  return(unsigned int)v7;
}

Referenced by:

AlpcpLocateSectionView
NtAlpcDeleteSectionView