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
- DirectoryInfo.cs
- sqlpipe.cs
- DataGridRelationshipRow.cs
- PatternMatcher.cs
- TreeIterators.cs
- BroadcastEventHelper.cs
- AssemblyAttributes.cs
- Focus.cs
- PhoneCallDesigner.cs
- ParserStack.cs
- DataGridViewMethods.cs
- DynamicDataRoute.cs
- MULTI_QI.cs
- PieceNameHelper.cs
- CreatingCookieEventArgs.cs
- NativeRecognizer.cs
- _WinHttpWebProxyDataBuilder.cs
- SerialStream.cs
- wgx_exports.cs
- DynamicDocumentPaginator.cs
- SynchronizationContextHelper.cs
- SqlFlattener.cs
- ResourcePermissionBase.cs
- Compensation.cs
- WebSysDescriptionAttribute.cs
- ObjectListItemCollection.cs
- Int64KeyFrameCollection.cs
- Properties.cs
- TableRowGroup.cs
- ReachSerializationUtils.cs
- WorkflowMarkupSerializationProvider.cs
- DetailsViewUpdateEventArgs.cs
- ObjectSet.cs
- DependencyPropertyValueSerializer.cs
- Imaging.cs
- streamingZipPartStream.cs
- TargetInvocationException.cs
- CFStream.cs
- CodeAttributeArgument.cs
- TextRunCacheImp.cs
- QueryReaderSettings.cs
- PreviewPageInfo.cs
- CellRelation.cs
- AsyncOperation.cs
- ErrorHandler.cs
- HttpHandlerAction.cs
- LinkLabelLinkClickedEvent.cs
- WmlTextBoxAdapter.cs
- XamlVector3DCollectionSerializer.cs
- SQLCharsStorage.cs
- WebPartDescriptionCollection.cs
- ScriptReferenceBase.cs
- TextElement.cs
- TemplateControlParser.cs
- ClientSettingsStore.cs
- SystemWebCachingSectionGroup.cs
- GPPOINT.cs
- ApplicationDirectory.cs
- MultiBindingExpression.cs
- QilPatternFactory.cs
- OdbcError.cs
- SessionEndingCancelEventArgs.cs
- SignerInfo.cs
- MailHeaderInfo.cs
- IgnoreFileBuildProvider.cs
- ProvideValueServiceProvider.cs
- dtdvalidator.cs
- Visual3DCollection.cs
- DynamicUpdateCommand.cs
- DocumentSequenceHighlightLayer.cs
- CapacityStreamGeometryContext.cs
- ConfigurationErrorsException.cs
- ApplicationGesture.cs
- TextAutomationPeer.cs
- RC2CryptoServiceProvider.cs
- DictionaryCustomTypeDescriptor.cs
- HtmlShimManager.cs
- X509CertificateChain.cs
- TableLayoutSettings.cs
- Msmq4SubqueuePoisonHandler.cs
- TypeName.cs
- ProfileProvider.cs
- SHA1Cng.cs
- MissingFieldException.cs
- ServiceNotStartedException.cs
- WorkItem.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- DesignTimeTemplateParser.cs
- CustomError.cs
- BaseParagraph.cs
- AttributeCollection.cs
- ProgressBarAutomationPeer.cs
- designeractionbehavior.cs
- log.cs
- ThreadStaticAttribute.cs
- PermissionSetEnumerator.cs
- HtmlWindow.cs
- Message.cs
- ItemPager.cs
- ListControlConvertEventArgs.cs