AlpcpGetPortNameInformation

INT64 __fastcall AlpcpGetPortNameInformation(
        VOID *PortObject,
        OBJECT_NAME_INFORMATION **PortNameInformation,
        UINT64 *PortNameLength){
  unsigned int v3; 
  int v7; 
  OBJECT_NAME_INFORMATION *PoolWithTag; 
  OBJECT_NAME_INFORMATION *v9; 
  SIZE_T NumberOfBytes; 
  v3 = *(_DWORD *)PortNameLength;
  LODWORD(NumberOfBytes) = 0;
  v7 = ObQueryNameStringMode(PortObject, 0i64, 0i64, &NumberOfBytes, 0);
  if( v7 == -1073741820 )
  {
    if( (unsigned int)NumberOfBytes <= v3 )
    {
      PoolWithTag = (OBJECT_NAME_INFORMATION *)ExAllocatePoolWithTag(
                                                 PagedPool,
                                                 (unsigned int)NumberOfBytes,
                                                 0x43504C41ui64);
      v9 = PoolWithTag;
      if( PoolWithTag )
      {
        v7 = ObQueryNameStringMode(PortObject, PoolWithTag, (unsigned int)NumberOfBytes, &NumberOfBytes, 0);
        if( v7 < 0 )
          ExFreePoolWithTag(v9, 0);
        else
          *PortNameInformation = v9;
      }
      else
      {
        v7 = -1073741801;
      }
    }
    *(_DWORD *)PortNameLength = NumberOfBytes;
  }
  return(unsigned int)v7;
}

Referenced by:

AlpcpLogWaitForNewMessage
AlpcpPortQueryServerInfo