Пример #1
0
 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);
     }
 }
Пример #2
0
 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);
     }
 }