SepQueryTypeString

NTSTATUS __stdcall SepQueryTypeString(VOID *Object, _UNICODE_STRING **TypeName){
  NTSTATUS result; 
  VOID **PoolWithTag; 
  _UNICODE_STRING v6; 
  UINT64 NumberOfBytes; 

  *TypeName = 0i64;
  LODWORD(NumberOfBytes) = 0;
  v6 = 0i64;
  result = ObQueryTypeName(Object, &v6, 0i64, &NumberOfBytes);
  if( result == -1073741820 )
  {
    PoolWithTag = ExAllocatePoolWithTag(1ui64, (unsigned int)NumberOfBytes, 1851024723i64);
    *TypeName = (_UNICODE_STRING *)PoolWithTag;
    if( PoolWithTag )
    {
      result = ObQueryTypeName(Object, (_UNICODE_STRING *)PoolWithTag, (unsigned int)NumberOfBytes, &NumberOfBytes);
      if( result < 0 )
      {
        ExFreePoolWithTag(*TypeName, 0);
        *TypeName = 0i64;
        return 0;
      }
    }
    else
    {
      return -1073741670;
    }
  }
  return result;
}

Referenced by:

SeOpenObjectAuditAlarmWithTransaction
SeOpenObjectForDeleteAuditAlarmWithTransaction
SeSecurityDescriptorChangedAuditAlarm
SeTokenDefaultDaclChangedAuditAlarm
SepAdtObjectReferenceAuditAlarm