internal static OpcRcw.Da.OPCBROWSEELEMENT[] GetBrowseElements(IntPtr BrowseElements, int BrowseElementCount) { if (BrowseElements != IntPtr.Zero && BrowseElementCount > 0) { OpcRcw.Da.OPCBROWSEELEMENT[] ret = new OpcRcw.Da.OPCBROWSEELEMENT[BrowseElementCount]; IntPtr pos = BrowseElements; for (int i = 0; i < BrowseElementCount; i++) { OpcRcw.Da.OPCBROWSEELEMENT element = (OpcRcw.Da.OPCBROWSEELEMENT)Marshal.PtrToStructure(pos, typeof(OpcRcw.Da.OPCBROWSEELEMENT)); Marshal.StructureToPtr(element, pos, false); pos = (IntPtr)(pos.ToInt32() + Marshal.SizeOf(typeof(OpcRcw.Da.OPCBROWSEELEMENT))); ret[i] = element; } return(ret); } return(new OpcRcw.Da.OPCBROWSEELEMENT[0]); }
/// <summary> /// Allocates and marshals an OPCBROWSEELEMENT structure. /// </summary> internal static OpcRcw.Da.OPCBROWSEELEMENT GetBrowseElement(BrowseElement input) { OpcRcw.Da.OPCBROWSEELEMENT output = new OpcRcw.Da.OPCBROWSEELEMENT(); if (input != null) { output.szName = input.Name; output.szItemID = input.ItemId; output.dwFlagValue = 0; output.ItemProperties = GetItemProperties(input.Properties); if (input.IsItem) { output.dwFlagValue |= OpcRcw.Da.Constants.OPC_BROWSE_ISITEM; } if (input.HasChildren) { output.dwFlagValue |= OpcRcw.Da.Constants.OPC_BROWSE_HASCHILDREN; } } return output; }