private const int LoadWithAlteredSearchPathFlag = 0x8; /* LOAD_WITH_ALTERED_SEARCH_PATH */ private static IntPtr LoadLibraryHelper(string libraryName, int flags, ref LoadLibErrorTracker errorTracker) { IntPtr hmod; if (((uint)flags & 0xFFFFFF00) != 0) { hmod = Interop.Kernel32.LoadLibraryEx(libraryName, IntPtr.Zero, (int)((uint)flags & 0xFFFFFF00)); if (hmod != IntPtr.Zero) { return(hmod); } int lastError = Marshal.GetLastWin32Error(); if (lastError != Interop.Errors.ERROR_INVALID_PARAMETER) { errorTracker.TrackErrorCode(lastError); return(hmod); } } hmod = Interop.Kernel32.LoadLibraryEx(libraryName, IntPtr.Zero, flags & 0xFF); if (hmod == IntPtr.Zero) { errorTracker.TrackErrorCode(Marshal.GetLastWin32Error()); } return(hmod); }
private static IntPtr LoadLibraryHelper(string libraryName, int flags, ref LoadLibErrorTracker errorTracker) { #if PLATFORM_WINDOWS IntPtr ret = Interop.mincore.LoadLibraryEx(libraryName, IntPtr.Zero, flags); if (ret != IntPtr.Zero) { return(ret); } int lastError = Marshal.GetLastWin32Error(); if (lastError != LoadLibErrorTracker.ERROR_INVALID_PARAMETER) { errorTracker.TrackErrorCode(lastError); } return(ret); #else IntPtr ret = IntPtr.Zero; if (libraryName == null) { errorTracker.TrackErrorCode(LoadLibErrorTracker.ERROR_MOD_NOT_FOUND); } else if (libraryName == String.Empty) { errorTracker.TrackErrorCode(LoadLibErrorTracker.ERROR_INVALID_PARAMETER); } else { // TODO: FileDosToUnixPathA ret = Interop.Sys.LoadLibrary(libraryName); if (ret == IntPtr.Zero) { errorTracker.TrackErrorCode(LoadLibErrorTracker.ERROR_MOD_NOT_FOUND); } } return(ret); #endif }