public override ITypeInfoWrapper GetItemByIndex(int index) { _parent.GetRefTypeOfImplType(index, out var href); _parent.GetRefTypeInfo(href, out var ti); return(TypeApiFactory.GetTypeInfoWrapper(ti)); }
public int GetSafeTypeInfoByIndex(int index, out ITypeInfoWrapper outTI) { outTI = null; using (var typeInfoPtr = AddressableVariables.Create <IntPtr>()) { var hr = _target_ITypeLib.GetTypeInfo(index, typeInfoPtr.Address); if (ComHelper.HRESULT_FAILED(hr)) { return(HandleBadHRESULT(hr)); } var outVal = TypeApiFactory.GetTypeInfoWrapper(typeInfoPtr.Value); _cachedTypeInfos = _cachedTypeInfos ?? new DisposableList <ITypeInfoWrapper>(); _cachedTypeInfos.Add(outVal); outTI = outVal; return(hr); } }
public int GetSafeRefTypeInfo(int hRef, out ITypeInfoWrapper outTI) { outTI = null; using (var typeInfoPtr = AddressableVariables.Create <IntPtr>()) { var hr = _target_ITypeInfo.GetRefTypeInfo(hRef, typeInfoPtr.Address); if (ComHelper.HRESULT_FAILED(hr)) { return(HandleBadHRESULT(hr)); } var outVal = TypeApiFactory.GetTypeInfoWrapper(typeInfoPtr.Value, IsUserFormBaseClass ? (int?)hRef : null); // takes ownership of the COM reference _cachedReferencedTypeInfos = _cachedReferencedTypeInfos ?? new DisposableList <ITypeInfoWrapper>(); _cachedReferencedTypeInfos.Add(outVal); outTI = outVal; return(hr); } }
public override int GetTypeInfoOfGuid(ref Guid guid, IntPtr ppTInfo) { var hr = _target_ITypeLib.GetTypeInfoOfGuid(guid, ppTInfo); if (ComHelper.HRESULT_FAILED(hr)) { return(HandleBadHRESULT(hr)); } var pTInfo = RdMarshal.ReadIntPtr(ppTInfo); using (var outVal = TypeApiFactory.GetTypeInfoWrapper(pTInfo)) // takes ownership of the COM reference [pTInfo] { RdMarshal.WriteIntPtr(ppTInfo, outVal.GetCOMReferencePtr()); _cachedTypeInfos = _cachedTypeInfos ?? new DisposableList <ITypeInfoWrapper>(); _cachedTypeInfos.Add(outVal); } return(hr); }