/// <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); }
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); }