Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ComIntegration / ComProxy.cs / 1 / ComProxy.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.ComIntegration { using System; using System.Runtime.InteropServices; using System.Collections.Generic; using System.ServiceModel; internal class ComProxy : IDisposable { IntPtr inner; IDisposable ccw; internal static ComProxy Create (IntPtr outer, object obj, IDisposable disp) { if (outer == IntPtr.Zero) { DiagnosticUtility.DebugAssert("Outer cannot be null"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } IntPtr inner = IntPtr.Zero; inner = Marshal.CreateAggregatedObject (outer, obj); int refCount = Marshal.AddRef (inner); // Workaround for the CLR ref count issue. if (3 == refCount) Marshal.Release (inner); Marshal.Release (inner); return new ComProxy (inner, disp); } internal ComProxy (IntPtr inner, IDisposable disp) { this.inner = inner; ccw = disp; } internal void QueryInterface (ref Guid riid, out IntPtr tearoff) { if (inner == IntPtr.Zero) { DiagnosticUtility.DebugAssert("Inner should not be Null at this point"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } int hr = Marshal.QueryInterface (inner, ref riid, out tearoff); if (hr != HR.S_OK) { DiagnosticUtility.DebugAssert("QueryInterface should succeed"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } } void IDisposable.Dispose() { Dispose(true); } void Dispose (bool disposing) { if (inner == IntPtr.Zero) { DiagnosticUtility.DebugAssert("Inner should not be Null at this point"); #pragma warning suppress 56519 // throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } Marshal.Release (inner); if (disposing) { if (ccw != null) ccw.Dispose (); } } public ComProxy Clone () { if (inner == IntPtr.Zero) { DiagnosticUtility.DebugAssert("Inner should not be Null at this point"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } Marshal.AddRef (inner); return new ComProxy (inner, null); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GenericAuthenticationEventArgs.cs
- UnrecognizedPolicyAssertionElement.cs
- _KerberosClient.cs
- Condition.cs
- PkcsMisc.cs
- DispatcherOperation.cs
- UIElementPropertyUndoUnit.cs
- TemplateBaseAction.cs
- WebPartZoneBase.cs
- PropertyChangedEventArgs.cs
- ByteAnimationUsingKeyFrames.cs
- FocusChangedEventArgs.cs
- DataGridViewColumn.cs
- QuotaThrottle.cs
- ChildTable.cs
- PrintDialog.cs
- DataListItem.cs
- VisualStyleTypesAndProperties.cs
- PagesChangedEventArgs.cs
- XNodeNavigator.cs
- CheckBoxField.cs
- formatstringdialog.cs
- SiteMapSection.cs
- ClientOptions.cs
- Int64.cs
- HttpPostedFile.cs
- DiffuseMaterial.cs
- ProviderManager.cs
- DocumentViewerBase.cs
- ProfileEventArgs.cs
- TemplatedControlDesigner.cs
- OutputCacheProfile.cs
- PerformanceCounterPermission.cs
- XmlSchemaNotation.cs
- PatternMatcher.cs
- NavigatorInvalidBodyAccessException.cs
- InstanceData.cs
- SynchronizedInputProviderWrapper.cs
- _RequestCacheProtocol.cs
- ReferenceConverter.cs
- SystemColors.cs
- InstalledFontCollection.cs
- embossbitmapeffect.cs
- EntityClassGenerator.cs
- ConfigurationManagerHelper.cs
- PrinterSettings.cs
- MexBindingBindingCollectionElement.cs
- StructureChangedEventArgs.cs
- ClientSponsor.cs
- control.ime.cs
- VoiceInfo.cs
- ComAdminInterfaces.cs
- OptimisticConcurrencyException.cs
- RichTextBox.cs
- TableAdapterManagerGenerator.cs
- SpnegoTokenAuthenticator.cs
- RelationshipDetailsCollection.cs
- CacheHelper.cs
- CodeSnippetExpression.cs
- DataException.cs
- SetStoryboardSpeedRatio.cs
- SmiRecordBuffer.cs
- ColumnHeaderConverter.cs
- SymbolPair.cs
- Slider.cs
- TableLayoutSettings.cs
- WindowsFont.cs
- FilterableAttribute.cs
- ReflectionTypeLoadException.cs
- DataGridViewRowCancelEventArgs.cs
- LookupBindingPropertiesAttribute.cs
- UnsignedPublishLicense.cs
- EditingScopeUndoUnit.cs
- ServiceObjectContainer.cs
- ImpersonationContext.cs
- ArrayList.cs
- InputLanguageCollection.cs
- EdmToObjectNamespaceMap.cs
- ColumnClickEvent.cs
- FormatConvertedBitmap.cs
- DataGridViewRowPrePaintEventArgs.cs
- ClusterRegistryConfigurationProvider.cs
- MemoryFailPoint.cs
- ImageCodecInfoPrivate.cs
- ProvidersHelper.cs
- SafeSystemMetrics.cs
- StrokeNodeOperations.cs
- DockAndAnchorLayout.cs
- MatrixAnimationUsingPath.cs
- ScopelessEnumAttribute.cs
- ControlCollection.cs
- ColumnMapCopier.cs
- StorageAssociationSetMapping.cs
- MemberDomainMap.cs
- ContentPathSegment.cs
- XmlCharCheckingWriter.cs
- UpdatePanelTriggerCollection.cs
- Timeline.cs
- CryptoApi.cs
- PrintDocument.cs