private OpcDaItemResult[] CreateItemResults(IList <OpcDaItemDefinition> itemDefinitions, OPCITEMDEF[] pItemArray,
                                                    OPCITEMRESULT[] opcDaItemResults, HRESULT[] ppErrors, bool setGroup)
        {
            var results = new OpcDaItemResult[pItemArray.Length];

            for (int index = 0; index < opcDaItemResults.Length; index++)
            {
                OPCITEMRESULT       opcItemResult     = opcDaItemResults[index];
                OpcDaItemDefinition opcItemDefinition = itemDefinitions[index];
                HRESULT             error             = ppErrors[index];

                if (error.Succeeded)
                {
                    var item = new OpcDaItem(opcItemDefinition, opcItemResult, setGroup ? this : null)
                    {
                        UserData = opcItemDefinition.UserData
                    };
                    results[index] = new OpcDaItemResult(item, error);
                }
                else
                {
                    results[index] = new OpcDaItemResult(null, error);
                }
            }
            return(results);
        }
 internal OpcDaItem(OpcDaItemDefinition itemDefinition, OPCITEMRESULT itemResult, OpcDaGroup @group)
 {
     Group             = @group;
     ClientHandle      = 0;
     ServerHandle      = itemResult.hServer;
     ItemId            = itemDefinition.ItemId;
     RequestedDataType = itemDefinition.RequestedDataType;
     CanonicalDataType = TypeConverter.FromVarEnum((VarEnum)itemResult.vtCanonicalDataType);
     Blob         = itemResult.pBlob;
     AccessPath   = itemDefinition.AccessPath;
     IsActive     = itemDefinition.IsActive;
     AccessRights = (OpcDaAccessRights)itemResult.dwAccessRights;
 }
 internal OpcDaItem(OpcDaItemDefinition itemDefinition, OPCITEMRESULT itemResult, OpcDaGroup @group)
 {
     Group = @group;
     ClientHandle = 0;
     ServerHandle = itemResult.hServer;
     ItemId = itemDefinition.ItemId;
     RequestedDataType = itemDefinition.RequestedDataType;
     CanonicalDataType = TypeConverter.FromVarEnum((VarEnum) itemResult.vtCanonicalDataType);
     Blob = itemResult.pBlob;
     AccessPath = itemDefinition.AccessPath;
     IsActive = itemDefinition.IsActive;
     AccessRights = (OpcDaAccessRights) itemResult.dwAccessRights;
 }
        private static OpcDaGroup CreateGroupWithItems(OpcDaServer server)
        {
            // Create a group with items.
            OpcDaGroup group = server.AddGroup("MyGroup");
            group.IsActive = true;

            var definition1 = new OpcDaItemDefinition
            {
                ItemId = "Bucket Brigade.Int4",
                IsActive = true
            };
            var definition2 = new OpcDaItemDefinition
            {
                ItemId = "Random.Int2",
                IsActive = true
            };
            OpcDaItemDefinition[] definitions = {definition1, definition2};
            OpcDaItemResult[] results = group.AddItems(definitions);

            // Handle adding results.
            foreach (OpcDaItemResult result in results)
            {
                if (result.Error.Failed)
                    Console.WriteLine("Error adding items: {0}", result.Error);
            }

            return group;
        }