public OPCServerLister() { m_OPCListObj = null; m_IfList = null; m_EnumObj = null; m_IfEnum = null; }
public OpcServerBrowser() { this.CLSID_OPCEnum = new Guid("{13486D51-4821-11D2-A494-3CB306C10000}"); Type typeFromCLSID = Type.GetTypeFromCLSID(this.CLSID_OPCEnum); this.ifSrvList = (IOPCServerList)Activator.CreateInstance(typeFromCLSID); }
/*------------------------------------------------------ * Browse Server * * ------------------------------------------------------*/ private SERVERPARAM[] BrowseServer(DEF_OPCDA opcDaVer, string hostName, out int nServerCnt) { nServerCnt = 0; try { // initialize IOPCServerList svrList = (IOPCServerList)CreateInstance(CLSID_SERVERLIST, hostName); // convert to GUID Guid catid; switch (opcDaVer) { case DEF_OPCDA.VER_30: catid = CLSID_DA_30; break; case DEF_OPCDA.VER_10: case DEF_OPCDA.VER_20: default: catid = CLSID_DA_20; break; } // Get class id SERVERPARAM[] svrPrms = GetServerParam(svrList, catid, out nServerCnt); return(svrPrms); } catch (Exception exc) { MessageBox.Show(exc.ToString(), "BrowseServer"); return(null); } }
// Token: 0x06000009 RID: 9 RVA: 0x00002470 File Offset: 0x00000670 private DxpSimpleClass.SERVERPARAM[] BrowseServer(string sNodeName, out int nServerCnt) { nServerCnt = 0; IOPCServerList iopcserverList = (IOPCServerList)DxpSimpleClass.CreateInstance(DxpSimpleClass.CLSID_SERVERLIST, sNodeName); DxpSimpleClass.SERVERPARAM[] result; try { Guid clsid_DA_ = DxpSimpleClass.CLSID_DA_30; DxpSimpleClass.SERVERPARAM[] serverParam = this.GetServerParam(iopcserverList, clsid_DA_, out nServerCnt); result = serverParam; } catch (Exception ex) { #if DEBUG Debug.WriteLine(ex); #endif result = null; } finally { Marshal.ReleaseComObject(iopcserverList); iopcserverList = null; } return(result); }
public void ListAllOnMachine(Guid p_CatID, string p_MachineName, out OPCServerInfo[] p_ServersList) { p_ServersList = null; Dispose(); Guid l_Guid = new Guid("13486D51-4821-11D2-A494-3CB306C10000"); Type l_TypeOfList = Type.GetTypeFromCLSID(l_Guid, p_MachineName); m_OPCListObj = Activator.CreateInstance(l_TypeOfList); m_IfList = (IOPCServerList)m_OPCListObj; if (m_IfList == null) { Marshal.ThrowExceptionForHR(HResults.E_ABORT); } m_IfList.EnumClassesOfCategories(1, ref p_CatID, 0, ref p_CatID, out m_EnumObj); if (m_EnumObj == null) { Marshal.ThrowExceptionForHR(HResults.E_ABORT); } m_IfEnum = (IEnumGuid)m_EnumObj; if (m_IfEnum == null) { Marshal.ThrowExceptionForHR(HResults.E_ABORT); } int l_MaxCount = 300; IntPtr l_PtrGuid = Marshal.AllocCoTaskMem(l_MaxCount * 16); int l_Count = 0; m_IfEnum.Next(l_MaxCount, l_PtrGuid, out l_Count); if (l_Count < 1) { Marshal.FreeCoTaskMem(l_PtrGuid); return; } p_ServersList = new OPCServerInfo[l_Count]; byte[] l_GuidBin = new byte[16]; int l_RunGuid = (int)l_PtrGuid; for (int i = 0; i < l_Count; ++i) { p_ServersList[i] = new OPCServerInfo(); Marshal.Copy((IntPtr)l_RunGuid, l_GuidBin, 0, 16); p_ServersList[i].ClsID = new Guid(l_GuidBin); m_IfList.GetClassDetails(ref p_ServersList[i].ClsID, out p_ServersList[i].ProgID, out p_ServersList[i].ServerName); l_RunGuid += 16; } Marshal.FreeCoTaskMem(l_PtrGuid); Dispose(); }
private SERVERPARAM[] GetServerParam(IOPCServerList svrList, Guid catid) { // get list of servers in the specified specification. IEnumGUID enumeratorObject = null; //enumeratorObject has been changed from object to IEnumGUID svrList.EnumClassesOfCategories( 1, new Guid[] { catid }, 0, null, out enumeratorObject); ArrayList prms = new ArrayList(); IEnumGUID enumerator = enumeratorObject; int fetched = 0; Guid[] buffer = new Guid[100]; SERVERPARAM prm; do { IntPtr _buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(Guid)) * 100); //alloc try { enumerator.Next(100, buffer, out fetched); IntPtr pPos = _buffer; for (int i = 0; i < fetched; i++) { prm.clsid = (Guid)Marshal.PtrToStructure(pPos, typeof(Guid)); pPos = (IntPtr)(pPos.ToInt64() + Marshal.SizeOf(typeof(Guid))); //prm.clsid = bufferPtr[i]; svrList.GetClassDetails( ref prm.clsid, out prm.progID, out prm.description); prms.Add(prm); } } catch { break; } finally { Marshal.FreeCoTaskMem(_buffer);//alloc�� ���� Ǯ��д�. } }while (fetched > 0); return((SERVERPARAM[])prms.ToArray(typeof(SERVERPARAM))); }
/*------------------------------------------------------ * Connect OPC Server * * (ret) True OK * False NG * ------------------------------------------------------*/ public bool Connect(DEF_OPCDA OpcdaVer, string sNodeName, string sSvrName, string sGrpName, int iUpdateRate) { if (m_OPCServer != null) { return(true); } m_OpcdaVer = OpcdaVer; try { // instantiate the serverlist using CoCreateInstanceEx. IOPCServerList svrList = (IOPCServerList)CreateInstance(CLSID_SERVERLIST, sNodeName); Guid clsidList; svrList.CLSIDFromProgID(sSvrName, out clsidList); m_OPCServer = (IOPCServer)CreateInstance(clsidList, sNodeName); if (m_OPCServer != null) { // 2011/11/14 シャットダウンイベントを受けれるようにする ( IConnectionPointContainer OPCConnPointCntnr = (IConnectionPointContainer)m_OPCServer; Guid guidShutdown = Marshal.GenerateGuidForType(typeof(IOPCShutdown)); OPCConnPointCntnr.FindConnectionPoint(ref guidShutdown, out m_OpcShutdownConnectionPoint); m_OpcShutdownConnectionPoint.Advise(this, out m_iShutdownConnectionCookie); // 2011/11/14 シャットダウンイベントを受けれるようにする ) if (AddGroup(sGrpName, iUpdateRate)) { IOPCCommon m_com = (IOPCCommon)m_OPCServer; m_com.SetClientName("TestClient"); m_bConnect = true; Marshal.ReleaseComObject(svrList); // 1.0.0.5 10/06/21 Kishimoto Release Com Object svrList = null; // 1.0.0.5 10/06/21 Kishimoto Release Com Object return(true); } } Marshal.ReleaseComObject(svrList); // 1.0.0.5 10/06/21 Kishimoto Release Com Object svrList = null; // 1.0.0.5 10/06/21 Kishimoto Release Com Object MessageBox.Show("Cannot connect OPC Server.", "Connect"); return(false); } catch (Exception exc) { MessageBox.Show(exc.ToString(), "Connect"); return(false); } }
public OpcServerBrowser(string ComputerName) { this.CLSID_OPCEnum = new Guid("{13486D51-4821-11D2-A494-3CB306C10000}"); if ((ComputerName != null) && (ComputerName != "")) { Type typeFromCLSID = Type.GetTypeFromCLSID(this.CLSID_OPCEnum, ComputerName); this.ifSrvList = (IOPCServerList)Activator.CreateInstance(typeFromCLSID); } else { Type typeFromCLSID = Type.GetTypeFromCLSID(this.CLSID_OPCEnum); this.ifSrvList = (IOPCServerList)Activator.CreateInstance(typeFromCLSID); } }
public void ListAllServer(Guid catid, out OPCServers[] serverslist) { serverslist = null; this.Dispose(); Guid clsid = new Guid("13486D51-4821-11D2-A494-3CB306C10000"); Type typeFromCLSID = Type.GetTypeFromCLSID(clsid); this.OPCObjList = Activator.CreateInstance(typeFromCLSID); this.interfaceServerList = (IOPCServerList)this.OPCObjList; if (this.interfaceServerList == null) { Marshal.ThrowExceptionForHR(-2147467260); } this.interfaceServerList.EnumClassesOfCategories(1, ref catid, 0, ref catid, out this.enumObject); if (this.enumObject == null) { Marshal.ThrowExceptionForHR(-2147467260); } this.interfaceEnumGUID = (IEnumGUID)this.enumObject; if (this.interfaceEnumGUID == null) { Marshal.ThrowExceptionForHR(-2147467260); } int celt = 300; IntPtr rgelt = Marshal.AllocCoTaskMem(celt * 0x10); int pceltFetched = 0; this.interfaceEnumGUID.Next(celt, rgelt, out pceltFetched); if (pceltFetched < 1) { Marshal.FreeCoTaskMem(rgelt); } else { serverslist = new OPCServers[pceltFetched]; byte[] destination = new byte[0x10]; int num3 = (int)rgelt; for (int i = 0; i < pceltFetched; i++) { serverslist[i] = new OPCServers(); Marshal.Copy((IntPtr)num3, destination, 0, 0x10); serverslist[i].classID = new Guid(destination); this.interfaceServerList.GetClassDetails(ref serverslist[i].classID, out serverslist[i].programID, out serverslist[i].serverName); num3 += 0x10; } Marshal.FreeCoTaskMem(rgelt); this.Dispose(); } }
public void Dispose() { m_IfEnum = null; if (m_EnumObj != null) { Marshal.ReleaseComObject(m_EnumObj); m_EnumObj = null; } m_IfList = null; if (m_OPCListObj != null) { Marshal.ReleaseComObject(m_OPCListObj); m_OPCListObj = null; } }
/*------------------------------------------------------ * Get Server Parameter * * ------------------------------------------------------*/ private SERVERPARAM[] GetServerParam(IOPCServerList svrList, Guid catid, out int nServerCnt) { // Get Server List IEnumGUID enumeratorObject = null; svrList.EnumClassesOfCategories(1, new Guid[] { catid }, 0, null, out enumeratorObject); ArrayList prms = new ArrayList(); IEnumGUID enumerator = enumeratorObject; int fetched = 0; Guid[] buffer = new Guid[100]; SERVERPARAM prm; nServerCnt = 0; do { IntPtr _buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(Guid)) * 100); try { enumerator.Next(100, buffer, out fetched); IntPtr pPos = _buffer; for (int i = 0; i < fetched; i++) { prm.clsid = (Guid)Marshal.PtrToStructure(pPos, typeof(Guid)); pPos = (IntPtr)(pPos.ToInt64() + Marshal.SizeOf(typeof(Guid))); prm.progID = ""; prm.description = ""; svrList.GetClassDetails(ref prm.clsid, out prm.progID, out prm.description); prms.Add(prm); nServerCnt++; } } catch { break; } finally { Marshal.FreeCoTaskMem(_buffer); } }while (fetched > 0); return((SERVERPARAM[])prms.ToArray(typeof(SERVERPARAM))); }
public void Dispose() { int num; this.interfaceEnumGUID = null; if (this.enumObject != null) { num = Marshal.ReleaseComObject(this.enumObject); this.enumObject = null; } this.interfaceServerList = null; if (this.OPCObjList != null) { num = Marshal.ReleaseComObject(this.OPCObjList); this.OPCObjList = null; } }
// Token: 0x06000005 RID: 5 RVA: 0x000020D4 File Offset: 0x000002D4 public bool Connect(string sNodeName, string sServerName) { if (this.m_OPCServer != null) { return(true); } IOPCServerList iopcserverList = (IOPCServerList)DxpSimpleClass.CreateInstance(DxpSimpleClass.CLSID_SERVERLIST, sNodeName); bool result; try { Guid clsid; iopcserverList.CLSIDFromProgID(sServerName, out clsid); this.m_OPCServer = (IOPCServer)DxpSimpleClass.CreateInstance(clsid, sNodeName); if (this.m_OPCServer != null) { ((IOPCCommon)this.m_OPCServer).SetClientName("TestClient"); this.m_bConnect = true; result = true; } else { result = false; } } catch (Exception ex) { #if DEBUG Debug.WriteLine(ex); #endif result = false; } finally { Marshal.ReleaseComObject(iopcserverList); iopcserverList = null; } return(result); }
/*------------------------------------------------------ * Browse OPC Server * * (ret) True OK * False NG * ------------------------------------------------------*/ private SERVERPARAM[] BrowseServer() { try { // instantiate the serverlist using CoCreateInstanceEx. IOPCServerList svrList = (IOPCServerList)CreateInstance(CLSID_SERVERLIST, null); // convert the interface version to a guid. Guid catid; switch (m_OpcdaVer) { case DEF_OPCDA.VER_30: catid = CLSID_DA_30; break; case DEF_OPCDA.VER_10: case DEF_OPCDA.VER_20: default: catid = CLSID_DA_20; break; } // read clsids. SERVERPARAM[] svrPrms = GetServerParam(svrList, catid); // // release enumerator object. // OpcCom.Interop.ReleaseServer(enumerator); // enumerator = null; return(svrPrms); } catch (Exception exc) { MessageBox.Show(exc.ToString(), "BrowseServer"); return(null); } }
// Token: 0x0600000A RID: 10 RVA: 0x000024D4 File Offset: 0x000006D4 private DxpSimpleClass.SERVERPARAM[] GetServerParam(IOPCServerList svrList, Guid catid, out int nServerCnt) { IEnumGUID enumGUID = null; svrList.EnumClassesOfCategories(1, new Guid[] { catid }, 0, null, out enumGUID); ArrayList arrayList = new ArrayList(); int num = 0; Guid[] array = new Guid[100]; nServerCnt = 0; do { try { enumGUID.Next(array.Length, array, out num); for (int i = 0; i < num; i++) { DxpSimpleClass.SERVERPARAM serverparam; serverparam.clsid = array[i]; svrList.GetClassDetails(ref serverparam.clsid, out serverparam.progID, out serverparam.description); arrayList.Add(serverparam); nServerCnt++; } } catch { break; } }while (num > 0); Marshal.ReleaseComObject(enumGUID); enumGUID = null; return((DxpSimpleClass.SERVERPARAM[])arrayList.ToArray(typeof(DxpSimpleClass.SERVERPARAM))); }
public OpcServerList() { OPCListObj = null; ifList = null; EnumObj = null; ifEnum = null; }
/// <summary> /// List all /// </summary> /// <param name="catid">Catid</param> public static OpcServerDefinition[] ListAll(Guid catid) { OpcServerDefinition[] serverslist = new OpcServerDefinition[0]; object enumObj = null; Type typeOfList = Type.GetTypeFromCLSID(OpcServerListGuid); object listObj = Activator.CreateInstance(typeOfList); try { IOPCServerList opcServerList = listObj as IOPCServerList; if (opcServerList == null) { Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT); } opcServerList.EnumClassesOfCategories(1, ref catid, 0, ref catid, out enumObj); if (enumObj == null) { Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT); } IEnumGUID ifEnum = enumObj as IEnumGUID; if (ifEnum == null) { Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT); } const int maxcount = 300; IntPtr ptrGuid = Marshal.AllocCoTaskMem(maxcount * 16); ifEnum.Next(maxcount, ptrGuid, out int count); if (count < 1) { Marshal.FreeCoTaskMem(ptrGuid); return(serverslist); } serverslist = new OpcServerDefinition[count]; byte[] guidbin = new byte[16]; int runGuid = (int)ptrGuid; for (int i = 0; i < count; i++) { serverslist[i] = new OpcServerDefinition(); Marshal.Copy((IntPtr)runGuid, guidbin, 0, 16); serverslist[i].ClsID = new Guid(guidbin); opcServerList.GetClassDetails(ref serverslist[i].ClsID, out serverslist[i].ProgID, out serverslist[i].Name); runGuid += 16; } Marshal.FreeCoTaskMem(ptrGuid); } finally { if (!(enumObj == null)) { Marshal.ReleaseComObject(enumObj); } if (!(listObj == null)) { Marshal.ReleaseComObject(listObj); } } return(serverslist); }
public void ListAll(Guid catid,out OpcServers[] serverslist) { serverslist = null; Dispose(); Guid guid = new Guid("13486D51-4821-11D2-A494-3CB306C10000"); Type typeoflist = Type.GetTypeFromCLSID(guid); OPCListObj = Activator.CreateInstance(typeoflist); ifList = (IOPCServerList)OPCListObj; if (ifList == null) Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT); ifList.EnumClassesOfCategories(1,ref catid,0,ref catid,out EnumObj); if (EnumObj == null) Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT); ifEnum = (IEnumGUID)EnumObj; if (ifEnum == null) Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT); int maxcount = 300; IntPtr ptrGuid = Marshal.AllocCoTaskMem(maxcount * 16); int count = 0; ifEnum.Next(maxcount,ptrGuid,out count); if (count < 1) { Marshal.FreeCoTaskMem(ptrGuid); return; } serverslist = new OpcServers[count]; byte[] guidbin = new byte[16]; int runGuid = (int)ptrGuid; for (int i = 0; i < count; i++) { serverslist[i] = new OpcServers(); Marshal.Copy((IntPtr)runGuid,guidbin,0,16); serverslist[i].ClsID = new Guid(guidbin); ifList.GetClassDetails(ref serverslist[i].ClsID, out serverslist[i].ProgID,out serverslist[i].ServerName); runGuid += 16; } Marshal.FreeCoTaskMem(ptrGuid); Dispose(); }
public void Dispose() { ifEnum = null; if (!(EnumObj == null)) { int rc = Marshal.ReleaseComObject(EnumObj); EnumObj = null; } ifList = null; if (!(OPCListObj == null)) { int rc = Marshal.ReleaseComObject(OPCListObj); OPCListObj = null; } }