Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / InteropServices / ComEventsInfo.cs / 1305376 / ComEventsInfo.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ComEventsInfo ** ** Purpose: part of ComEventHelpers APIs which allow binding ** managed delegates to COM's connection point based events. ** ** Date: April 2008 **/ #if FEATURE_COMINTEROP namespace System.Runtime.InteropServices { using System; using ComTypes = System.Runtime.InteropServices.ComTypes; // see code:ComEventsHelper#ComEventsArchitecture [System.Security.SecurityCritical] internal class ComEventsInfo { #region fields private ComEventsSink _sinks; private object _rcw; #endregion #region ctor/dtor ComEventsInfo(object rcw) { _rcw = rcw; } [System.Security.SecuritySafeCritical] ~ComEventsInfo() { // see code:ComEventsHelper#ComEventsFinalization _sinks = ComEventsSink.RemoveAll(_sinks); } #endregion #region static methods [System.Security.SecurityCritical] internal static ComEventsInfo Find(object rcw) { return (ComEventsInfo)Marshal.GetComObjectData(rcw, typeof(ComEventsInfo)); } // it is caller's responsibility to call this method under lock(rcw) [System.Security.SecurityCritical] internal static ComEventsInfo FromObject(object rcw) { ComEventsInfo eventsInfo = Find(rcw); if (eventsInfo == null) { eventsInfo = new ComEventsInfo(rcw); Marshal.SetComObjectData(rcw, typeof(ComEventsInfo), eventsInfo); } return eventsInfo; } #endregion #region internal methods internal ComEventsSink FindSink(ref Guid iid) { return ComEventsSink.Find(_sinks, ref iid); } // it is caller's responsibility to call this method under lock(rcw) internal ComEventsSink AddSink(ref Guid iid) { ComEventsSink sink = new ComEventsSink(_rcw, iid); _sinks = ComEventsSink.Add(_sinks, sink); return _sinks; } // it is caller's responsibility to call this method under lock(rcw) [System.Security.SecurityCritical] internal ComEventsSink RemoveSink(ComEventsSink sink) { _sinks = ComEventsSink.Remove(_sinks, sink); return _sinks; } #endregion } } #endif // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ComEventsInfo ** ** Purpose: part of ComEventHelpers APIs which allow binding ** managed delegates to COM's connection point based events. ** ** Date: April 2008 **/ #if FEATURE_COMINTEROP namespace System.Runtime.InteropServices { using System; using ComTypes = System.Runtime.InteropServices.ComTypes; // see code:ComEventsHelper#ComEventsArchitecture [System.Security.SecurityCritical] internal class ComEventsInfo { #region fields private ComEventsSink _sinks; private object _rcw; #endregion #region ctor/dtor ComEventsInfo(object rcw) { _rcw = rcw; } [System.Security.SecuritySafeCritical] ~ComEventsInfo() { // see code:ComEventsHelper#ComEventsFinalization _sinks = ComEventsSink.RemoveAll(_sinks); } #endregion #region static methods [System.Security.SecurityCritical] internal static ComEventsInfo Find(object rcw) { return (ComEventsInfo)Marshal.GetComObjectData(rcw, typeof(ComEventsInfo)); } // it is caller's responsibility to call this method under lock(rcw) [System.Security.SecurityCritical] internal static ComEventsInfo FromObject(object rcw) { ComEventsInfo eventsInfo = Find(rcw); if (eventsInfo == null) { eventsInfo = new ComEventsInfo(rcw); Marshal.SetComObjectData(rcw, typeof(ComEventsInfo), eventsInfo); } return eventsInfo; } #endregion #region internal methods internal ComEventsSink FindSink(ref Guid iid) { return ComEventsSink.Find(_sinks, ref iid); } // it is caller's responsibility to call this method under lock(rcw) internal ComEventsSink AddSink(ref Guid iid) { ComEventsSink sink = new ComEventsSink(_rcw, iid); _sinks = ComEventsSink.Add(_sinks, sink); return _sinks; } // it is caller's responsibility to call this method under lock(rcw) [System.Security.SecurityCritical] internal ComEventsSink RemoveSink(ComEventsSink sink) { _sinks = ComEventsSink.Remove(_sinks, sink); return _sinks; } #endregion } } #endif // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- JsonReader.cs
- ReliableChannelListener.cs
- Util.cs
- ChangeBlockUndoRecord.cs
- FormattedText.cs
- RoutedEventArgs.cs
- Int32CAMarshaler.cs
- WebPartVerbsEventArgs.cs
- SingleSelectRootGridEntry.cs
- ClosableStream.cs
- ReadOnlyDataSource.cs
- OledbConnectionStringbuilder.cs
- M3DUtil.cs
- CodeRemoveEventStatement.cs
- TextDataBindingHandler.cs
- safemediahandle.cs
- FatalException.cs
- GroupQuery.cs
- ErrorHandlerModule.cs
- ValueTable.cs
- Transform3D.cs
- XPathParser.cs
- TreeNode.cs
- NamespaceEmitter.cs
- LinqDataSourceValidationException.cs
- ProofTokenCryptoHandle.cs
- XmlDictionaryReader.cs
- SID.cs
- _emptywebproxy.cs
- QueryResponse.cs
- SplashScreenNativeMethods.cs
- ReadWriteObjectLock.cs
- ValidationErrorEventArgs.cs
- Size.cs
- DataBoundControlAdapter.cs
- CompressionTransform.cs
- WebWorkflowRole.cs
- CodeDirectiveCollection.cs
- DataGridViewSelectedColumnCollection.cs
- SizeChangedEventArgs.cs
- CharacterHit.cs
- TypeExtension.cs
- GridViewRow.cs
- SerializationInfoEnumerator.cs
- PersonalizationStateInfo.cs
- FileUtil.cs
- StateRuntime.cs
- WebPartTracker.cs
- ResourcesChangeInfo.cs
- AppDomainResourcePerfCounters.cs
- FolderBrowserDialog.cs
- XPathDocumentBuilder.cs
- CompleteWizardStep.cs
- InputLanguageSource.cs
- BitmapMetadata.cs
- Config.cs
- RowUpdatingEventArgs.cs
- SharedConnectionWorkflowTransactionService.cs
- EventInfo.cs
- StylusPointPropertyInfoDefaults.cs
- TemplateNameScope.cs
- MenuItemStyleCollection.cs
- LayoutEditorPart.cs
- PropertyMetadata.cs
- NetworkInterface.cs
- SqlDataSourceView.cs
- ValueProviderWrapper.cs
- GridView.cs
- RuleInfoComparer.cs
- AsyncPostBackErrorEventArgs.cs
- DocumentCollection.cs
- Certificate.cs
- ImageDrawing.cs
- _ListenerRequestStream.cs
- RoutedEventValueSerializer.cs
- PagesSection.cs
- TreeWalkHelper.cs
- MethodAccessException.cs
- AvTrace.cs
- MessageDecoder.cs
- AttributeExtensions.cs
- SvcFileManager.cs
- FillBehavior.cs
- ApplicationActivator.cs
- SiteMapDataSource.cs
- GetChildSubtree.cs
- WindowsRegion.cs
- TcpConnectionPoolSettingsElement.cs
- ProcessHostConfigUtils.cs
- GradientBrush.cs
- SpeechSeg.cs
- BitmapMetadataBlob.cs
- AlgoModule.cs
- EventRecordWrittenEventArgs.cs
- FlowDocumentPage.cs
- AsyncDataRequest.cs
- TransactionScope.cs
- RectAnimationUsingKeyFrames.cs
- ServiceOperation.cs
- SelectionPatternIdentifiers.cs