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
- WindowsServiceCredential.cs
- CounterCreationDataConverter.cs
- ToolboxControl.cs
- DBConnection.cs
- WindowsSpinner.cs
- GridViewRowPresenterBase.cs
- EffectiveValueEntry.cs
- BinaryUtilClasses.cs
- EventLogPermission.cs
- SQLChars.cs
- QilList.cs
- SimpleTypesSurrogate.cs
- ComponentSerializationService.cs
- LogReservationCollection.cs
- ThreadAbortException.cs
- DynamicResourceExtensionConverter.cs
- StorageMappingFragment.cs
- ComponentChangedEvent.cs
- ClientBuildManagerCallback.cs
- ProxyWebPartConnectionCollection.cs
- WebPartDisplayModeEventArgs.cs
- OrderedDictionary.cs
- SQLInt16.cs
- StorageTypeMapping.cs
- GCHandleCookieTable.cs
- BuildManager.cs
- AutoResizedEvent.cs
- UserNameSecurityTokenParameters.cs
- SourceElementsCollection.cs
- ReadOnlyAttribute.cs
- NgenServicingAttributes.cs
- DrawingBrush.cs
- ResXDataNode.cs
- IdlingCommunicationPool.cs
- ModelItemDictionaryImpl.cs
- SiteMembershipCondition.cs
- SecurityState.cs
- UInt32.cs
- MemberNameValidator.cs
- ErasingStroke.cs
- ContextMenuStrip.cs
- ToolStripItemCollection.cs
- NameValuePermission.cs
- WebColorConverter.cs
- EntityCommandDefinition.cs
- WebZoneDesigner.cs
- DataGridCellsPanel.cs
- DragDrop.cs
- ImmComposition.cs
- HashLookup.cs
- Win32Exception.cs
- XmlNavigatorStack.cs
- XmlCollation.cs
- FrameworkContextData.cs
- SwitchAttribute.cs
- ObjectDataSourceStatusEventArgs.cs
- ApplicationServiceManager.cs
- SessionParameter.cs
- DataGridLinkButton.cs
- DesignerVerbCollection.cs
- cookiecollection.cs
- RoutedEventValueSerializer.cs
- DockPattern.cs
- TextRangeEditLists.cs
- TextTrailingCharacterEllipsis.cs
- WebServiceErrorEvent.cs
- WinEventQueueItem.cs
- PropertyToken.cs
- HttpWebRequest.cs
- ToolStripDesignerUtils.cs
- TextEncodedRawTextWriter.cs
- ProtocolsConfigurationHandler.cs
- ImageMapEventArgs.cs
- SqlBooleanizer.cs
- RuntimeUtils.cs
- FaultDescriptionCollection.cs
- ErrorStyle.cs
- OracleLob.cs
- ColorBlend.cs
- HtmlInputText.cs
- ItemsControlAutomationPeer.cs
- SmtpMail.cs
- Int32AnimationBase.cs
- ValidationPropertyAttribute.cs
- SafeBitVector32.cs
- Accessors.cs
- InheritablePropertyChangeInfo.cs
- ViewStateModeByIdAttribute.cs
- SendKeys.cs
- ReflectionPermission.cs
- OptimizedTemplateContentHelper.cs
- PropertyTabChangedEvent.cs
- Automation.cs
- DataError.cs
- Label.cs
- ServiceDesigner.cs
- Enlistment.cs
- RemotingConfiguration.cs
- SqlAliaser.cs
- PowerStatus.cs