示例#1
0
        private static IntPtr SysGetDllProcAddress(IntPtr libHandle, string symbol)
        {
#if UNITY_STANDALONE_WIN
            return(PInvokes_Windows.GetProcAddress(libHandle, symbol));
#elif UNITY_STANDALONE_LINUX
            return(PInvokes_Linux.dlsym(libHandle, symbol));
#elif UNITY_STANDALONE_OSX
            return(PInvokes_Osx.dlsym(libHandle, symbol));
#endif
        }
示例#2
0
        private static IntPtr SysLoadDll(string filepath)
        {
#if UNITY_STANDALONE_WIN
            return(PInvokes_Windows.LoadLibrary(filepath));
#elif UNITY_STANDALONE_LINUX
            return(PInvokes_Linux.dlopen(filepath, (int)Options.posixDlopenFlags));
#elif UNITY_STANDALONE_OSX
            return(PInvokes_Osx.dlopen(filepath, (int)Options.posixDlopenFlags));
#endif
        }
示例#3
0
        private static bool SysUnloadDll(IntPtr libHandle)
        {
#if UNITY_STANDALONE_WIN
            return(PInvokes_Windows.FreeLibrary(libHandle));
#elif UNITY_STANDALONE_LINUX
            return(PInvokes_Linux.dlclose(libHandle) == 0);
#elif UNITY_STANDALONE_OSX
            return(PInvokes_Osx.dlclose(libHandle) == 0);
#endif
        }
示例#4
0
 /// <summary>Unprotect memory pages</summary>
 /// <param name="memory">The starting memory address</param>
 /// <param name="size">The length of memory block</param>
 ///
 internal static void UnprotectMemory(long memory, ulong size)
 {
     if (IsWindows)
     {
         var success = PInvokes_Windows.VirtualProtect(new IntPtr(memory), new UIntPtr(size), PInvokes_Windows.Protection.PAGE_EXECUTE_READWRITE, out var _);
         if (!success)
         {
             throw new System.ComponentModel.Win32Exception();
         }
     }
 }
示例#5
0
 internal static void FlushCode(long memory, ulong size)
 {
     if (IsWindows)
     {
         var processHandle = PInvokes_Windows.GetCurrentProcess();
         var success       = PInvokes_Windows.FlushInstructionCache(processHandle, new IntPtr(memory), new UIntPtr(size));
         if (!success)
         {
             throw new System.ComponentModel.Win32Exception();
         }
     }
 }
示例#6
0
        private static IntPtr SysGetDllProcAddress(IntPtr libHandle, string symbol)
        {
#if UNITY_STANDALONE_LINUX || UNITY_EDITOR_LINUX
            return(PInvokes_Linux.dlsym(libHandle, symbol));
#elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
            return(PInvokes_Osx.dlsym(libHandle, symbol));
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
            return(PInvokes_Windows.GetProcAddress(libHandle, symbol));
#else
            throw GetUnsupportedPlatformExcpetion();
#endif
        }
示例#7
0
        private static bool SysUnloadDll(IntPtr libHandle)
        {
#if UNITY_STANDALONE_LINUX || UNITY_EDITOR_LINUX
            return(PInvokes_Linux.dlclose(libHandle) == 0);
#elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
            return(PInvokes_Osx.dlclose(libHandle) == 0);
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
            return(PInvokes_Windows.FreeLibrary(libHandle));
#else
            throw GetUnsupportedPlatformExcpetion();
#endif
        }
示例#8
0
        private static IntPtr SysLoadDll(string filepath)
        {
#if UNITY_STANDALONE_LINUX || UNITY_EDITOR_LINUX
            return(PInvokes_Linux.dlopen(filepath, (int)Options.posixDlopenFlags));
#elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
            return(PInvokes_Osx.dlopen(filepath, (int)Options.posixDlopenFlags));
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
            return(PInvokes_Windows.LoadLibrary(filepath));
#else
            throw GetUnsupportedPlatformExcpetion();
#endif
        }