/// <summary>
        /// Unmarshals and deallocates an OPCHDA_MODIFIEDITEM structure.
        /// </summary>
        internal static ModifiedValueCollection GetModifiedValueCollection(OpcRcw.Hda.OPCHDA_MODIFIEDITEM input, bool deallocate)
        {
            ModifiedValueCollection output = new ModifiedValueCollection();

            output.ClientHandle = input.hClient;

            object[]   values            = OpcCom.Interop.GetVARIANTs(ref input.pvDataValues, input.dwCount, deallocate);
            DateTime[] timestamps        = OpcCom.Interop.GetFILETIMEs(ref input.pftTimeStamps, input.dwCount, deallocate);
            int[]      qualities         = OpcCom.Interop.GetInt32s(ref input.pdwQualities, input.dwCount, deallocate);
            DateTime[] modificationTimes = OpcCom.Interop.GetFILETIMEs(ref input.pftModificationTime, input.dwCount, deallocate);
            int[]      editTypes         = OpcCom.Interop.GetInt32s(ref input.pEditType, input.dwCount, deallocate);
            string[]   users             = OpcCom.Interop.GetUnicodeStrings(ref input.szUser, input.dwCount, deallocate);

            for (int ii = 0; ii < input.dwCount; ii++)
            {
                ModifiedValue value = new ModifiedValue();

                value.Value            = values[ii];
                value.Timestamp        = timestamps[ii];
                value.Quality          = new Opc.Da.Quality((short)(qualities[ii] & 0x0000FFFF));
                value.HistorianQuality = (Opc.Hda.Quality)((int)(qualities[ii] & 0xFFFF0000));
                value.ModificationTime = modificationTimes[ii];
                value.EditType         = (Opc.Hda.EditType)editTypes[ii];
                value.User             = users[ii];

                output.Add(value);
            }

            return(output);
        }
Esempio n. 2
0
        internal static ModifiedValueCollection GetModifiedValueCollection(OPCHDA_MODIFIEDITEM input, bool deallocate)
        {
            ModifiedValueCollection values = new ModifiedValueCollection {
                ClientHandle = input.hClient
            };

            object[]   objArray   = OpcCom.Interop.GetVARIANTs(ref input.pvDataValues, input.dwCount, deallocate);
            DateTime[] timeArray  = OpcCom.Interop.GetFILETIMEs(ref input.pftTimeStamps, input.dwCount, deallocate);
            int[]      numArray   = OpcCom.Interop.GetInt32s(ref input.pdwQualities, input.dwCount, deallocate);
            DateTime[] timeArray2 = OpcCom.Interop.GetFILETIMEs(ref input.pftModificationTime, input.dwCount, deallocate);
            int[]      numArray2  = OpcCom.Interop.GetInt32s(ref input.pEditType, input.dwCount, deallocate);
            string[]   strArray   = OpcCom.Interop.GetUnicodeStrings(ref input.szUser, input.dwCount, deallocate);
            for (int i = 0; i < input.dwCount; i++)
            {
                ModifiedValue value2 = new ModifiedValue {
                    Value            = objArray[i],
                    Timestamp        = timeArray[i],
                    Quality          = new Opc.Da.Quality((short)(numArray[i] & 0xffff)),
                    HistorianQuality = ((Opc.Hda.Quality)numArray[i]) & ((Opc.Hda.Quality)(unchecked ((int)0xffff0000L))),
                    ModificationTime = timeArray2[i],
                    EditType         = (EditType)numArray2[i],
                    User             = strArray[i]
                };
                values.Add((Opc.Hda.ItemValue)value2);
            }
            return(values);
        }