public int[] SetDataTypes(int[] serverHandles, short[] requestedDataTypes) { var ppErrors = IntPtr.Zero; ItemMgt.SetDatatypes(serverHandles.Length, serverHandles, requestedDataTypes, out ppErrors); return(ComUtils.GetInt32s(ref ppErrors, serverHandles.Length, true)); }
public int[] SetActiveState(int[] serverHandles, bool isActive) { var ppErrors = IntPtr.Zero; ItemMgt.SetActiveState(serverHandles.Length, serverHandles, isActive ? 1 : 0, out ppErrors); return(ComUtils.GetInt32s(ref ppErrors, serverHandles.Length, true)); }
public int[] SetClientHandles(int[] serverHandles, int[] clientHandles) { var ppErrors = IntPtr.Zero; ItemMgt.SetClientHandles(serverHandles.Length, serverHandles, clientHandles, out ppErrors); return(ComUtils.GetInt32s(ref ppErrors, serverHandles.Length, true)); }
public int[] RemoveItems(int[] serverHandles) { var ppErrors = IntPtr.Zero; ItemMgt.RemoveItems(serverHandles.Length, serverHandles, out ppErrors); return(ComUtils.GetInt32s(ref ppErrors, serverHandles.Length, true)); }
public OpcItemResult[] AddItems(OpcItemDefine[] items) { var rawItems = items.Select(item => new OPCITEMDEF { bActive = item.IsActive ? 1 : 0, hClient = item.ClientHandle, szAccessPath = item.AccessPath, szItemID = item.ItemId, vtRequestedDataType = item.RequestedDataType }) .ToArray(); var ppAddResults = IntPtr.Zero; var ppErrors = IntPtr.Zero; ItemMgt.AddItems(items.Length, rawItems, out ppAddResults, out ppErrors); var errors = ComUtils.GetInt32s(ref ppErrors, items.Length, true); var results = GetStructures <OPCITEMRESULT>(ppAddResults, items.Length).Zip(errors, (r, e) => { try { if (r.pBlob != IntPtr.Zero) { Marshal.FreeCoTaskMem(r.pBlob); r.pBlob = IntPtr.Zero; } return(new OpcItemResult { AccessRights = r.dwAccessRights, CanonicalDataType = r.vtCanonicalDataType, ErrorCode = e, ServerHandle = r.hServer }); } catch (Exception ex) { return(new OpcItemResult { ErrorCode = ex.HResult }); } }) .ToArray(); return(results); }