public static void CloseLibrary() { if (ExtIO._isHWStarted) { ExtIO.StopHW(); } if (ExtIO._isHWInit) { ExtIO.CloseHW(); } if (!(ExtIO._dllHandle == IntPtr.Zero)) { ExtIO.logInfo("CloseLibrary()"); try { ExtIO.FreeLibrary(ExtIO._dllHandle); } catch (Exception ex) { ExtIO.logInfo("FreeLibrary: " + ex.Message); } ExtIO.logResult("FreeLibrary: "); ExtIO._dllHandle = IntPtr.Zero; } }
public static void UseLibrary(string fileName) { if (ExtIO._dllHandle != IntPtr.Zero) { ExtIO.CloseLibrary(); } ExtIO.logInfo("UseLibrary(), dll=" + fileName); try { ExtIO._dllHandle = ExtIO.LoadLibrary(fileName); } catch (Exception ex) { ExtIO.logInfo("LoadLibrary: " + ex.Message); } ExtIO.logResult("LoadLibrary:"); if (ExtIO._dllHandle == IntPtr.Zero) { ExtIO.logInfo("LoadLibrary(), Unable to load DLL file: " + fileName); throw new Exception("Unable to load ExtIO library " + fileName); } ExtIO._dllName = fileName; ExtIO._initHW = null; ExtIO._openHW = null; ExtIO._startHW = null; ExtIO._stopHW = null; ExtIO._closeHW = null; ExtIO._setHWLO = null; ExtIO._tuneChanged = null; ExtIO._getHWLO = null; ExtIO._getHWSR = null; ExtIO._getStatus = null; ExtIO._showGUI = null; ExtIO._hideGUI = null; ExtIO._setCallback = null; IntPtr procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "InitHW"); if (procAddress != IntPtr.Zero) { ExtIO._initHW = (dInitHW)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dInitHW)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "OpenHW"); if (procAddress != IntPtr.Zero) { ExtIO._openHW = (dOpenHW)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dOpenHW)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "StartHW"); if (procAddress != IntPtr.Zero) { ExtIO._startHW = (dStartHW)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dStartHW)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "StopHW"); if (procAddress != IntPtr.Zero) { ExtIO._stopHW = (dStopHW)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dStopHW)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "CloseHW"); if (procAddress != IntPtr.Zero) { ExtIO._closeHW = (dCloseHW)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dCloseHW)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "SetCallback"); if (procAddress != IntPtr.Zero) { ExtIO._setCallback = (dSetCallback)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dSetCallback)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "SetHWLO"); if (procAddress != IntPtr.Zero) { ExtIO._setHWLO = (dSetHWLO)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dSetHWLO)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "TuneChange"); if (procAddress != IntPtr.Zero) { ExtIO._tuneChanged = (dTuneChanged)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dTuneChanged)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "GetHWLO"); if (procAddress != IntPtr.Zero) { ExtIO._getHWLO = (dGetHWLO)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dGetHWLO)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "GetHWSR"); if (procAddress != IntPtr.Zero) { ExtIO._getHWSR = (dGetHWSR)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dGetHWSR)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "GetTune"); if (procAddress != IntPtr.Zero) { ExtIO._getTune = (dGetTune)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dGetTune)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "GetStatus"); if (procAddress != IntPtr.Zero) { ExtIO._getStatus = (dGetStatus)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dGetStatus)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "ShowGUI"); if (procAddress != IntPtr.Zero) { ExtIO._showGUI = (dShowGUI)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dShowGUI)); } procAddress = ExtIO.GetProcAddress(ExtIO._dllHandle, "HideGUI"); if (procAddress != IntPtr.Zero) { ExtIO._hideGUI = (dHideGUI)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(dHideGUI)); } if (ExtIO._initHW != null && ExtIO._openHW != null && ExtIO._startHW != null && ExtIO._setHWLO != null && ExtIO._getStatus != null && ExtIO._setCallback != null && ExtIO._stopHW != null && ExtIO._closeHW != null) { return; } ExtIO.FreeLibrary(ExtIO._dllHandle); ExtIO._dllHandle = IntPtr.Zero; ExtIO.logInfo("LoadLibrary(), ExtIO DLL is not valid, not all entries found."); throw new ApplicationException("ExtIO DLL is not valid, not all entries found."); }