Multi-platform .NET bindings to the Ultralight project.
at master 119 lines 4.0 kB view raw
1using System; 2using System.Runtime.InteropServices; 3using ImpromptuNinjas.UltralightSharp; 4 5namespace Nvidia.Nsight.Injection { 6 7 public enum NsightInjectionResult { 8 9 Ok = 0, 10 11 Failure = -1, 12 13 InvalidArgument = -2, 14 15 InjectionFailed = -3, 16 17 AlreadyInjected = -4, 18 19 NotInjected = -5, 20 21 DriverStillLoaded = -6, 22 23 } 24 25 public enum NsightSku { 26 27 Unknown, 28 29 Public, 30 31 Pro, 32 33 Internal, 34 35 } 36 37 public unsafe partial struct NsightInjectionInstallationInfo { 38 39 public NsightSku Sku; 40 41 [NativeTypeName("uint16_t")] 42 public ushort VersionMajor; 43 44 [NativeTypeName("uint16_t")] 45 public ushort VersionMinor; 46 47 [NativeTypeName("uint16_t")] 48 public ushort VersionPatch; 49 50 [NativeTypeName("const NGFX_Injection_PathChar *")] 51 public ushort* InstallationPath; 52 53 } 54 55 public enum NsightInjectionActivityType { 56 57 Unknown, 58 59 FrameDebugger, 60 61 FrameProfiler, 62 63 GenerateCppCapture, 64 65 GpuTrace, 66 67 } 68 69 public unsafe partial struct NsightInjectionActivity { 70 71 public NsightInjectionActivityType Type; 72 73 [NativeTypeName("const char *")] 74 public sbyte* Description; 75 76 } 77 78 public static unsafe partial class Nsight { 79 80 [DllImport("NGFX_Injection", CallingConvention = CallingConvention.Cdecl, EntryPoint = "NGFX_Injection_EnumerateInstallations", ExactSpelling = true)] 81 public static extern NsightInjectionResult EnumerateInstallations([NativeTypeName("uint32_t *")] uint* pCount, [NativeTypeName("NGFX_Injection_InstallationInfo *")] 82 NsightInjectionInstallationInfo* pInstallations); 83 84 [DllImport("NGFX_Injection", CallingConvention = CallingConvention.Cdecl, EntryPoint = "NGFX_Injection_EnumerateActivities", ExactSpelling = true)] 85 public static extern NsightInjectionResult EnumerateActivities([NativeTypeName("const NGFX_Injection_InstallationInfo *")] 86 NsightInjectionInstallationInfo* pInstallation, [NativeTypeName("uint32_t *")] uint* pCount, [NativeTypeName("NGFX_Injection_Activity *")] 87 NsightInjectionActivity* pActivities); 88 89 [DllImport("NGFX_Injection", CallingConvention = CallingConvention.Cdecl, EntryPoint = "NGFX_Injection_InjectToProcess", ExactSpelling = true)] 90 public static extern NsightInjectionResult InjectToProcess([NativeTypeName("const NGFX_Injection_InstallationInfo *")] 91 NsightInjectionInstallationInfo* pInstallation, [NativeTypeName("const NGFX_Injection_Activity *")] 92 NsightInjectionActivity* pActivity); 93 94 [DllImport("NGFX_Injection", CallingConvention = CallingConvention.Cdecl, EntryPoint = "NGFX_Injection_ExecuteActivityCommand", ExactSpelling = true)] 95 public static extern NsightInjectionResult ExecuteActivityCommand(); 96 97 [NativeTypeName("#define NGFX_Injection_API_VersionMajor 0")] 98 public const int VersionMajor = 0; 99 100 [NativeTypeName("#define NGFX_Injection_API_VersionMinor 7")] 101 public const int VersionMinor = 7; 102 103 [NativeTypeName("#define NGFX_Injection_API_VersionPatch 0")] 104 public const int VersionPatch = 0; 105 106 [NativeTypeName("#define NGFX_Injection_API_Version ((NGFX_Injection_API_VersionMajor*1000) + (NGFX_Injection_API_VersionMinor*10) + NGFX_Injection_API_VersionPatch)")] 107 public const int Version = ((0 * 1000) + (7 * 10) + 0); 108 109 [NativeTypeName("#define NGFX_Injection_API_VersionString NGFX_Injection_API_MK_STR(NGFX_Injection_API_VersionMajor) \".\" NGFX_Injection_API_MK_STR(NGFX_Injection_API_VersionMinor) \".\" NGFX_Injection_API_MK_STR(NGFX_Injection_API_VersionPatch)")] 110 public static ReadOnlySpan<byte> NgfxInjectionApiVersionStringUtf8 111 => new byte[] {0x30, 0x2E, 0x37, 0x2E, 0x30, 0x00}; 112 113 [NativeTypeName("#define NGFX_Injection_API_VersionString NGFX_Injection_API_MK_STR(NGFX_Injection_API_VersionMajor) \".\" NGFX_Injection_API_MK_STR(NGFX_Injection_API_VersionMinor) \".\" NGFX_Injection_API_MK_STR(NGFX_Injection_API_VersionPatch)")] 114 public static string NgfxInjectionApiVersionStringUtf16 115 => $"{VersionMajor}.{VersionMinor}.{VersionPatch}"; 116 117 } 118 119}