Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- xml.cs
- LambdaCompiler.Binary.cs
- CodeTypeDeclaration.cs
- Component.cs
- OrderPreservingMergeHelper.cs
- OleDbConnectionFactory.cs
- PointHitTestResult.cs
- CheckBoxStandardAdapter.cs
- TrackingServices.cs
- DateBoldEvent.cs
- CTreeGenerator.cs
- QueryRewriter.cs
- ObfuscateAssemblyAttribute.cs
- Process.cs
- ViewLoader.cs
- ControlParameter.cs
- SamlAdvice.cs
- MdImport.cs
- formatter.cs
- BrowserCapabilitiesFactoryBase.cs
- ImmutableObjectAttribute.cs
- _NtlmClient.cs
- InteropBitmapSource.cs
- GradientStop.cs
- ReachDocumentReferenceSerializer.cs
- SqlDelegatedTransaction.cs
- CompilerInfo.cs
- FormsIdentity.cs
- Matrix3DConverter.cs
- DataGridViewCheckBoxColumn.cs
- QuotedStringFormatReader.cs
- LineGeometry.cs
- TargetPerspective.cs
- BaseCollection.cs
- _emptywebproxy.cs
- HttpListener.cs
- TextReader.cs
- DetailsViewInsertedEventArgs.cs
- ProtocolsConfigurationHandler.cs
- UpdatePanelTrigger.cs
- FileInfo.cs
- BooleanProjectedSlot.cs
- MultipleCopiesCollection.cs
- TableLayoutSettingsTypeConverter.cs
- SourceChangedEventArgs.cs
- SoapBinding.cs
- CharAnimationUsingKeyFrames.cs
- XmlValueConverter.cs
- PointAnimationClockResource.cs
- XmlSigningNodeWriter.cs
- XmlSerializationGeneratedCode.cs
- AnnotationResourceCollection.cs
- DataBindingExpressionBuilder.cs
- StrongTypingException.cs
- BooleanKeyFrameCollection.cs
- CustomLineCap.cs
- XPathDocumentBuilder.cs
- webbrowsersite.cs
- CodeCompiler.cs
- CalendarKeyboardHelper.cs
- HandlerFactoryCache.cs
- Selector.cs
- Lazy.cs
- ZipArchive.cs
- TextServicesHost.cs
- AutomationElementIdentifiers.cs
- SqlXml.cs
- HtmlInputSubmit.cs
- MemoryRecordBuffer.cs
- SqlParameterCollection.cs
- WindowClosedEventArgs.cs
- SurrogateSelector.cs
- WebPartAuthorizationEventArgs.cs
- RegexStringValidator.cs
- DeflateStream.cs
- TypeExtension.cs
- SR.cs
- PersonalizableAttribute.cs
- PlaceHolder.cs
- CharacterBuffer.cs
- jithelpers.cs
- DictionaryChange.cs
- KoreanLunisolarCalendar.cs
- DataGridCommandEventArgs.cs
- StrongNameMembershipCondition.cs
- dataprotectionpermission.cs
- FixedTextPointer.cs
- ProcessInfo.cs
- QueryOutputWriter.cs
- ServiceEndpointElementCollection.cs
- __Filters.cs
- ServiceReflector.cs
- InternalConfigEventArgs.cs
- panel.cs
- ApplicationTrust.cs
- DynamicResourceExtension.cs
- ModelUtilities.cs
- X509ChainElement.cs
- DashStyles.cs
- ObjectDataSourceMethodEventArgs.cs