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
- ToolStripItemEventArgs.cs
- HasCopySemanticsAttribute.cs
- SqlGatherConsumedAliases.cs
- COM2ExtendedUITypeEditor.cs
- XmlProcessingInstruction.cs
- UnmanagedMarshal.cs
- RemotingConfigParser.cs
- DataKey.cs
- DATA_BLOB.cs
- SecurityDescriptor.cs
- BaseCollection.cs
- DXD.cs
- MetadataElement.cs
- ActivityValidator.cs
- NumberSubstitution.cs
- DataReceivedEventArgs.cs
- QilVisitor.cs
- RuntimeWrappedException.cs
- TextServicesHost.cs
- XmlParserContext.cs
- GridViewCommandEventArgs.cs
- DetailsViewPageEventArgs.cs
- SerializationStore.cs
- PresentationSource.cs
- _OverlappedAsyncResult.cs
- UrlUtility.cs
- Timer.cs
- GacUtil.cs
- ListViewGroup.cs
- PointIndependentAnimationStorage.cs
- WebBrowserPermission.cs
- TypeNameParser.cs
- TextClipboardData.cs
- DeclarativeCatalogPart.cs
- SqlCommandBuilder.cs
- UnhandledExceptionEventArgs.cs
- Hash.cs
- PngBitmapDecoder.cs
- SqlProviderManifest.cs
- PropertyOverridesTypeEditor.cs
- StringPropertyBuilder.cs
- ListDictionary.cs
- TextFindEngine.cs
- List.cs
- ConfigurationPropertyAttribute.cs
- BitmapImage.cs
- WebPartConnectionsCancelVerb.cs
- SequentialOutput.cs
- SettingsPropertyValue.cs
- BamlRecords.cs
- VerificationAttribute.cs
- BookmarkEventArgs.cs
- ContentElementAutomationPeer.cs
- GenericXmlSecurityTokenAuthenticator.cs
- ParenthesizePropertyNameAttribute.cs
- AssemblyNameProxy.cs
- PolyLineSegment.cs
- TextFormatterImp.cs
- VariableValue.cs
- VariableExpressionConverter.cs
- BypassElement.cs
- TcpChannelHelper.cs
- RangeBaseAutomationPeer.cs
- FixedTextBuilder.cs
- TypeConverterHelper.cs
- ClaimTypeElementCollection.cs
- MobileCategoryAttribute.cs
- XamlTreeBuilder.cs
- SocketElement.cs
- SystemTcpStatistics.cs
- Int64Storage.cs
- ComponentChangingEvent.cs
- WriteStateInfoBase.cs
- OdbcParameter.cs
- MachineKeySection.cs
- SqlMethods.cs
- StyleBamlRecordReader.cs
- SymmetricSecurityBindingElement.cs
- WindowsPen.cs
- ButtonChrome.cs
- InputScope.cs
- AttributeCollection.cs
- CqlBlock.cs
- SecurityDescriptor.cs
- ColorConverter.cs
- BinaryNode.cs
- NetStream.cs
- UIHelper.cs
- EnumBuilder.cs
- SiteOfOriginPart.cs
- DataViewSettingCollection.cs
- CreateUserWizardAutoFormat.cs
- TableHeaderCell.cs
- MetadataCache.cs
- QilVisitor.cs
- SkinBuilder.cs
- BinaryObjectWriter.cs
- CompositeScriptReference.cs
- SqlLiftIndependentRowExpressions.cs
- GC.cs