SeConvertSecurityDescriptorToStringSecurityDescriptor

INT64 __fastcall SeConvertSecurityDescriptorToStringSecurityDescriptor(
        VOID *SecurityDescriptor,
        VOID *RequestedStringSDRevision,
        UINT64 SecurityInformation,
        WCHAR **StringSecurityDescriptor,
        UINT64 *StringSecurityDescriptorLen){
  unsigned int v6; 
  INT64 result; 
  WCHAR *v8; 
  v6 = 0;
  if( SecurityDescriptor && (_DWORD)SecurityInformation || !StringSecurityDescriptor )
  {
    if( SecurityDescriptor && StringSecurityDescriptor && (_DWORD)SecurityInformation )
    {
      if( (_DWORD)RequestedStringSDRevision != 1 )
      {
        LOWORD(result) = 1305;
        return(unsigned __int16)result | 0xC0070000;
      }
      result = LocalConvertSDToStringSD_Rev1(
                 SecurityDescriptor,
                 (UINT64)RequestedStringSDRevision,
                 (WCHAR **)SecurityInformation,
                 (UINT64 *)SecurityDescriptor);
    }
    else
    {
      result = 87i64;
    }
    if( (int)result <= 0 )
      return result;
    return(unsigned __int16)result | 0xC0070000;
  }
  SddlpAlloc(2u, (UINT64)RequestedStringSDRevision);
  *StringSecurityDescriptor = v8;
  if( v8 )
  {
    *v8 = 0;
    if( StringSecurityDescriptorLen )
      *(_DWORD *)StringSecurityDescriptorLen = 0;
  }
  else
  {
    v6 = 8;
  }
  if( v6 )
    v6 |= 0xC0070000;
  return v6;
}

Referenced by:

AdtpBuildAccessReasonAuditStringInternal
AdtpBuildSecurityDescriptorUnicodeString
CmpLogHiveFileInaccessible