public void CreateGroupEnumerator(OPCENUMSCOPE dwScope, ref Guid riid, out object ppUnk) { OpcCom.Da.Wrapper.Server server; Monitor.Enter(server = this); try { switch (dwScope) { case OPCENUMSCOPE.OPC_ENUM_PUBLIC_CONNECTIONS: case OPCENUMSCOPE.OPC_ENUM_PUBLIC: if (riid != typeof(OpcRcw.Comn.IEnumString).GUID) { if (riid != typeof(IEnumUnknown).GUID) { throw new ExternalException("E_NOINTERFACE", -2147467262); } ppUnk = new EnumUnknown(null); } else { ppUnk = new OpcCom.Da.Wrapper.EnumString(null); } return; } if (riid == typeof(IEnumUnknown).GUID) { ppUnk = new EnumUnknown(this.m_groups); } else { if (riid != typeof(OpcRcw.Comn.IEnumString).GUID) { throw new ExternalException("E_NOINTERFACE", -2147467262); } ArrayList strings = new ArrayList(this.m_groups.Count); foreach (Group group in this.m_groups.Values) { strings.Add(group.Name); } ppUnk = new OpcCom.Da.Wrapper.EnumString(strings); } } catch (Exception exception) { throw CreateException(exception); } finally { Monitor.Exit(server); } }
public void BrowseOPCItemIDs(OPCBROWSETYPE dwBrowseFilterType, string szFilterCriteria, short vtDataTypeFilter, int dwAccessRightsFilter, out OpcRcw.Da.IEnumString ppIEnumString) { OpcCom.Da.Wrapper.Server server; Monitor.Enter(server = this); try { ItemIdentifier itemID = null; if (this.m_browseStack.Count > 0) { itemID = (ItemIdentifier)this.m_browseStack.Peek(); } ArrayList hits = new ArrayList(); this.Browse(itemID, dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter, dwAccessRightsFilter, hits); ppIEnumString = new OpcCom.Da.Wrapper.EnumString(hits); } catch (Exception exception) { throw CreateException(exception); } finally { Monitor.Exit(server); } }