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
- ServicePoint.cs
- AssemblyName.cs
- AutomationPropertyInfo.cs
- XmlAttributeOverrides.cs
- JournalNavigationScope.cs
- BlobPersonalizationState.cs
- RtType.cs
- CompilationLock.cs
- IgnoreSectionHandler.cs
- FixedDocumentPaginator.cs
- _BasicClient.cs
- Propagator.Evaluator.cs
- JoinSymbol.cs
- CurrentChangingEventManager.cs
- SqlProviderServices.cs
- TransformedBitmap.cs
- ExpandCollapseProviderWrapper.cs
- XmlSchemaInclude.cs
- BooleanConverter.cs
- Pts.cs
- TdsParserStateObject.cs
- MessageQueueEnumerator.cs
- Menu.cs
- EntityReference.cs
- DataGridRelationshipRow.cs
- documentsequencetextcontainer.cs
- NotSupportedException.cs
- Rfc2898DeriveBytes.cs
- Missing.cs
- SqlColumnizer.cs
- ToolboxItemAttribute.cs
- DateTimeConverter.cs
- FontUnitConverter.cs
- WebPartConnectionsCancelEventArgs.cs
- AttributeQuery.cs
- Vector3dCollection.cs
- ControlSerializer.cs
- bidPrivateBase.cs
- Line.cs
- TableLayoutSettings.cs
- BinaryMessageFormatter.cs
- ActivityStateRecord.cs
- SerialErrors.cs
- MimeAnyImporter.cs
- WebPartsSection.cs
- DesignerWidgets.cs
- ListViewInsertedEventArgs.cs
- TablePatternIdentifiers.cs
- ViewDesigner.cs
- PositiveTimeSpanValidator.cs
- Module.cs
- CounterNameConverter.cs
- PresentationSource.cs
- GlyphingCache.cs
- RequestCache.cs
- TextServicesPropertyRanges.cs
- StrongNameMembershipCondition.cs
- DataPointer.cs
- XmlIlVisitor.cs
- HtmlInputButton.cs
- TagMapCollection.cs
- RegistryPermission.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- wgx_exports.cs
- Endpoint.cs
- Empty.cs
- ScalarOps.cs
- TableChangeProcessor.cs
- DataGridViewColumnHeaderCell.cs
- HelpKeywordAttribute.cs
- Transform.cs
- ResourceSet.cs
- CleanUpVirtualizedItemEventArgs.cs
- PointAnimationBase.cs
- DataGridItemCollection.cs
- SelectionItemPattern.cs
- IIS7UserPrincipal.cs
- Helpers.cs
- PropertyHelper.cs
- DesignerSerializationVisibilityAttribute.cs
- Mouse.cs
- CodeGotoStatement.cs
- HitTestDrawingContextWalker.cs
- RuleInfoComparer.cs
- DependentList.cs
- TranslateTransform.cs
- FindCriteria11.cs
- EntityReference.cs
- ChineseLunisolarCalendar.cs
- Point4D.cs
- Rect3D.cs
- BrowserCapabilitiesCodeGenerator.cs
- WebPartConnectionsConfigureVerb.cs
- SpellerInterop.cs
- BodyGlyph.cs
- TrackingExtract.cs
- X509CertificateChain.cs
- DetailsViewUpdateEventArgs.cs
- ColorContextHelper.cs
- EmbossBitmapEffect.cs