コード例 #1
0
        public OpcServerCategory[] GetCategories(Guid clsid)
        {
            IEnumGUID catEnumerator = null;

            try
            {
                catEnumerator = _catInformation.EnumImplCategoriesOfClass(clsid);

                var catids = new Guid[MaxItemsPerRequest];
                int fetched;
                var result = new List <OpcServerCategory>();
                do
                {
                    catEnumerator.Next(catids.Length, catids, out fetched);
                    for (var i = 0; i < fetched; i++)
                    {
                        var catid             = catids[i];
                        var opcServerCategory = OpcServerCategory.Get(catid);
                        if (opcServerCategory != null)
                        {
                            result.Add(opcServerCategory);
                        }
                    }
                } while (fetched != 0);

                return(result.ToArray());
            }
            finally
            {
                if (catEnumerator != null)
                {
                    Marshal.ReleaseComObject(catEnumerator);
                }
            }
        }
コード例 #2
0
 private Guid[] GetCategoriesGuids(OpcServerCategory[] categories)
 {
     return categories.Select(c => c.CATID).ToArray();
 }