예제 #1
0
        public override IntPtr GetDynamicLibraryProcedureAddress(IntPtr handle, string procName)
        {
            var addr      = LinuxApi.dlsym(handle, procName);
            var lastError = Marshal.GetLastWin32Error();

            if (addr == IntPtr.Zero)
            {
                ThrowHelper.ThrowENetLibraryProcNotFound(procName, lastError);
            }

            return(addr);
        }
예제 #2
0
        public override IntPtr LoadDynamicLibrary(string dllPath)
        {
            var handle    = LinuxApi.dlopen(dllPath, LinuxApi.RTLD_NOW);
            var lastError = Marshal.GetLastWin32Error();

            if (handle == IntPtr.Zero)
            {
                ThrowHelper.ThrowENetLibraryLoadFailed(lastError);
            }

            return(handle);
        }
예제 #3
0
 public override void FreeDynamicLibrary(IntPtr hModule) => LinuxApi.dlclose(hModule);
예제 #4
0
 public override IntPtr MemoryCopy(IntPtr dest, IntPtr src, UIntPtr count) => LinuxApi.memcpy(dest, src, count);
예제 #5
0
 public override IntPtr GetProcAddress(IntPtr handle, string procName) => LinuxApi.dlsym(handle, procName);
예제 #6
0
 public override IntPtr LoadLibrary(string dllPath) => LinuxApi.dlopen(dllPath, LinuxApi.RTLD_NOW);