VR4Medical/ICI/Library/PackageCache/com.unity.xr.openxr@3903c1059bcf/Runtime/OpenXRDiagnosticReport.cs
2025-07-29 13:45:50 +03:00

58 lines
2.2 KiB
C#

using System;
using System.Runtime.InteropServices;
namespace UnityEngine.XR.OpenXR
{
internal class DiagnosticReport
{
private const string LibraryName = "UnityOpenXR";
public static readonly ulong k_NullSection = 0;
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_StartReport")]
public static extern void StartReport();
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_GetSection", CharSet = CharSet.Ansi)]
public static extern ulong GetSection(string sectionName);
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_AddSectionEntry", CharSet = CharSet.Ansi)]
public static extern void AddSectionEntry(ulong sectionHandle, string sectionEntry, string sectionBody);
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_AddSectionBreak", CharSet = CharSet.Ansi)]
public static extern void AddSectionBreak(ulong sectionHandle);
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_AddEventEntry", CharSet = CharSet.Ansi)]
public static extern void AddEventEntry(string eventName, string eventData);
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_DumpReport")]
private static extern void Internal_DumpReport();
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_DumpReportWithReason")]
private static extern void Internal_DumpReport(string reason);
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_GenerateReport")]
static extern IntPtr Internal_GenerateReport();
[DllImport(LibraryName, EntryPoint = "DiagnosticReport_ReleaseReport")]
static extern void Internal_ReleaseReport(IntPtr report);
internal static string GenerateReport()
{
string ret = "";
IntPtr buffer = Internal_GenerateReport();
if (buffer != IntPtr.Zero)
{
ret = Marshal.PtrToStringAnsi(buffer);
Internal_ReleaseReport(buffer);
buffer = IntPtr.Zero;
}
return ret;
}
public static void DumpReport(string reason)
{
Internal_DumpReport(reason);
}
}
}