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
- RuntimeHelpers.cs
- NameValueConfigurationElement.cs
- ChangeTracker.cs
- EntityContainerEntitySetDefiningQuery.cs
- StringUtil.cs
- PropertyMappingExceptionEventArgs.cs
- SHA512.cs
- RoutedEventArgs.cs
- WindowsListView.cs
- MultipartContentParser.cs
- MetadataUtil.cs
- InstanceStore.cs
- SpotLight.cs
- HebrewNumber.cs
- PropertyDescriptorCollection.cs
- DrawTreeNodeEventArgs.cs
- HostVisual.cs
- EditorPartDesigner.cs
- GPPOINT.cs
- SqlMethodCallConverter.cs
- UTF8Encoding.cs
- AsyncOperationManager.cs
- RectangleGeometry.cs
- safemediahandle.cs
- XmlSignificantWhitespace.cs
- BevelBitmapEffect.cs
- Module.cs
- CustomErrorCollection.cs
- CatalogZone.cs
- KnownColorTable.cs
- RsaSecurityKey.cs
- SourceFilter.cs
- PickDesigner.xaml.cs
- AutomationPattern.cs
- SymLanguageType.cs
- TypedTableBase.cs
- SuppressMergeCheckAttribute.cs
- StringOutput.cs
- FieldAccessException.cs
- ConfigurationElement.cs
- AppSettingsReader.cs
- ItemContainerGenerator.cs
- MetaModel.cs
- MarkupCompilePass2.cs
- XamlLoadErrorInfo.cs
- ServiceThrottle.cs
- DbSource.cs
- BaseDataList.cs
- Storyboard.cs
- DataGridViewColumnEventArgs.cs
- QilPatternVisitor.cs
- IUnknownConstantAttribute.cs
- ActivityExecutionFilter.cs
- GeometryDrawing.cs
- AppSecurityManager.cs
- SimpleHandlerBuildProvider.cs
- TextEffectCollection.cs
- XmlSchemaAnyAttribute.cs
- _SslSessionsCache.cs
- WpfWebRequestHelper.cs
- ValueOfAction.cs
- HtmlContainerControl.cs
- DataGridViewSelectedColumnCollection.cs
- CompiledQuery.cs
- MobileControlBuilder.cs
- UriSectionData.cs
- TextBox.cs
- QilFunction.cs
- KoreanCalendar.cs
- DataGridTextBox.cs
- SignedXml.cs
- HtmlInputText.cs
- EraserBehavior.cs
- CommandEventArgs.cs
- RuntimeCompatibilityAttribute.cs
- CngProvider.cs
- NativeWindow.cs
- DeploymentSection.cs
- XmlILIndex.cs
- ProviderException.cs
- BinaryObjectWriter.cs
- DefaultTraceListener.cs
- DirtyTextRange.cs
- RootCodeDomSerializer.cs
- UriExt.cs
- StaticTextPointer.cs
- DataGridViewCellStyleConverter.cs
- SamlAudienceRestrictionCondition.cs
- LinqDataSourceHelper.cs
- WsatServiceCertificate.cs
- HtmlTernaryTree.cs
- ContainerControlDesigner.cs
- WindowsFormsHostAutomationPeer.cs
- ToolboxComponentsCreatingEventArgs.cs
- FragmentQueryProcessor.cs
- RepeaterItemEventArgs.cs
- IOException.cs
- SSmlParser.cs
- Serializer.cs
- PropertyOverridesDialog.cs