/// <summary> /// retrieves the parent from a handle /// </summary> internal AddressSpaceElement GetParent(uint aHandle) { if (aHandle == 0) { return m_root; } // end if OTObjectData parent = new OTObjectData(); IntPtr pParent = Marshal.AllocCoTaskMem(Marshal.SizeOf(parent)); Marshal.StructureToPtr(parent, pParent, false); if ((uint) EnumResultCode.S_OK != OTBFunctions.OTSGetParent(aHandle, pParent)) { return null; } // end if parent = (OTObjectData) Marshal.PtrToStructure(pParent, typeof (OTObjectData)); Marshal.FreeCoTaskMem(pParent); AddressSpaceElement elementParent = GetElementFromArray(parent.m_userData); if (elementParent == null) { return m_root; } // end if return elementParent; } // end getParent