internal static OPCSERVERSTATUS GetServerStatus(ServerStatus input, int groupCount) { OPCSERVERSTATUS opcserverstatus = new OPCSERVERSTATUS(); if (input != null) { opcserverstatus.szVendorInfo = input.VendorInfo; opcserverstatus.wMajorVersion = 0; opcserverstatus.wMinorVersion = 0; opcserverstatus.wBuildNumber = 0; opcserverstatus.dwServerState = (OPCSERVERSTATE)input.ServerState; opcserverstatus.ftStartTime = Convert(OpcCom.Interop.GetFILETIME(input.StartTime)); opcserverstatus.ftCurrentTime = Convert(OpcCom.Interop.GetFILETIME(input.CurrentTime)); opcserverstatus.ftLastUpdateTime = Convert(OpcCom.Interop.GetFILETIME(input.LastUpdateTime)); opcserverstatus.dwBandWidth = -1; opcserverstatus.dwGroupCount = groupCount; opcserverstatus.wReserved = 0; if (input.ProductVersion == null) { return(opcserverstatus); } string[] strArray = input.ProductVersion.Split(new char[] { '.' }); if (strArray.Length > 0) { try { opcserverstatus.wMajorVersion = System.Convert.ToInt16(strArray[0]); } catch { opcserverstatus.wMajorVersion = 0; } } if (strArray.Length > 1) { try { opcserverstatus.wMinorVersion = System.Convert.ToInt16(strArray[1]); } catch { opcserverstatus.wMinorVersion = 0; } } opcserverstatus.wBuildNumber = 0; for (int i = 2; i < strArray.Length; i++) { try { opcserverstatus.wBuildNumber = (short)((opcserverstatus.wBuildNumber * 100) + System.Convert.ToInt16(strArray[i])); } catch { opcserverstatus.wBuildNumber = 0; return(opcserverstatus); } } } return(opcserverstatus); }
internal static ServerStatus GetServerStatus(ref IntPtr pInput, bool deallocate) { ServerStatus status = null; if (pInput != IntPtr.Zero) { OPCSERVERSTATUS opcserverstatus = (OPCSERVERSTATUS)Marshal.PtrToStructure(pInput, typeof(OPCSERVERSTATUS)); status = new ServerStatus { VendorInfo = opcserverstatus.szVendorInfo, ProductVersion = string.Format("{0}.{1}.{2}", opcserverstatus.wMajorVersion, opcserverstatus.wMinorVersion, opcserverstatus.wBuildNumber), ServerState = (serverState)opcserverstatus.dwServerState, StatusInfo = null, StartTime = OpcCom.Interop.GetFILETIME(Convert(opcserverstatus.ftStartTime)), CurrentTime = OpcCom.Interop.GetFILETIME(Convert(opcserverstatus.ftCurrentTime)), LastUpdateTime = OpcCom.Interop.GetFILETIME(Convert(opcserverstatus.ftLastUpdateTime)) }; if (deallocate) { Marshal.DestroyStructure(pInput, typeof(OPCSERVERSTATUS)); Marshal.FreeCoTaskMem(pInput); pInput = IntPtr.Zero; } } return(status); }
internal static ServerStatus GetServerStatus(ref IntPtr pInput, bool deallocate) { ServerStatus serverStatus = null; if (pInput != IntPtr.Zero) { OPCSERVERSTATUS oPCSERVERSTATUS = (OPCSERVERSTATUS)Marshal.PtrToStructure(pInput, typeof(OPCSERVERSTATUS)); serverStatus = new ServerStatus(); serverStatus.VendorInfo = oPCSERVERSTATUS.szVendorInfo; serverStatus.ProductVersion = $"{oPCSERVERSTATUS.wMajorVersion}.{oPCSERVERSTATUS.wMinorVersion}.{oPCSERVERSTATUS.wBuildNumber}"; serverStatus.ServerState = (serverState)oPCSERVERSTATUS.dwServerState; serverStatus.StatusInfo = null; serverStatus.StartTime = OpcCom.Interop.GetFILETIME(Convert(oPCSERVERSTATUS.ftStartTime)); serverStatus.CurrentTime = OpcCom.Interop.GetFILETIME(Convert(oPCSERVERSTATUS.ftCurrentTime)); serverStatus.LastUpdateTime = OpcCom.Interop.GetFILETIME(Convert(oPCSERVERSTATUS.ftLastUpdateTime)); if (deallocate) { Marshal.DestroyStructure(pInput, typeof(OPCSERVERSTATUS)); Marshal.FreeCoTaskMem(pInput); pInput = IntPtr.Zero; } } return(serverStatus); }
internal OpcDaServerStatus(OPCSERVERSTATUS opcserverstatus) { StartTime = FileTimeConverter.FromFileTime(opcserverstatus.ftStartTime); CurrentTime = FileTimeConverter.FromFileTime(opcserverstatus.ftCurrentTime); LastUpdateTime = FileTimeConverter.FromFileTime(opcserverstatus.ftLastUpdateTime); ServerState = (OpcDaServerState)opcserverstatus.dwServerState; GroupCount = opcserverstatus.dwGroupCount; Bandwidth = opcserverstatus.dwBandWidth; Version = new Version(opcserverstatus.wMajorVersion, opcserverstatus.wMinorVersion, opcserverstatus.wBuildNumber); Reserved = opcserverstatus.wReserved; VendorInfo = opcserverstatus.szVendorInfo; }
public void GetStatus(out IntPtr ppServerStatus) { lock (this) { try { OPCSERVERSTATUS serverStatus = Interop.GetServerStatus(m_server.GetStatus(), m_groups.Count); ppServerStatus = Marshal.AllocCoTaskMem(Marshal.SizeOf(serverStatus.GetType())); Marshal.StructureToPtr((object)serverStatus, ppServerStatus, fDeleteOld: false); } catch (Exception e) { throw CreateException(e); } } }
public void GetStatus(out IntPtr ppServerStatus) { OpcCom.Da.Wrapper.Server server; Monitor.Enter(server = this); try { OPCSERVERSTATUS serverStatus = OpcCom.Da.Interop.GetServerStatus(this.m_server.GetStatus(), this.m_groups.Count); ppServerStatus = Marshal.AllocCoTaskMem(Marshal.SizeOf(serverStatus.GetType())); Marshal.StructureToPtr(serverStatus, ppServerStatus, false); } catch (Exception exception) { throw CreateException(exception); } finally { Monitor.Exit(server); } }
internal static OPCSERVERSTATUS GetServerStatus(ServerStatus input, int groupCount) { OPCSERVERSTATUS result = default(OPCSERVERSTATUS); if (input != null) { result.szVendorInfo = input.VendorInfo; result.wMajorVersion = 0; result.wMinorVersion = 0; result.wBuildNumber = 0; result.dwServerState = (OPCSERVERSTATE)input.ServerState; result.ftStartTime = Convert(OpcCom.Interop.GetFILETIME(input.StartTime)); result.ftCurrentTime = Convert(OpcCom.Interop.GetFILETIME(input.CurrentTime)); result.ftLastUpdateTime = Convert(OpcCom.Interop.GetFILETIME(input.LastUpdateTime)); result.dwBandWidth = -1; result.dwGroupCount = groupCount; result.wReserved = 0; if (input.ProductVersion != null) { string[] array = input.ProductVersion.Split('.'); if (array.Length > 0) { try { result.wMajorVersion = System.Convert.ToInt16(array[0]); } catch { result.wMajorVersion = 0; } } if (array.Length > 1) { try { result.wMinorVersion = System.Convert.ToInt16(array[1]); } catch { result.wMinorVersion = 0; } } result.wBuildNumber = 0; for (int i = 2; i < array.Length; i++) { try { result.wBuildNumber = (short)(result.wBuildNumber * 100 + System.Convert.ToInt16(array[i])); } catch { result.wBuildNumber = 0; return(result); } } } } return(result); }