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
- AmbientProperties.cs
- SerialPort.cs
- PasswordRecovery.cs
- DefaultAsyncDataDispatcher.cs
- TextEditorLists.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- BooleanExpr.cs
- RefreshPropertiesAttribute.cs
- mediapermission.cs
- PrintingPermission.cs
- RightsManagementEncryptionTransform.cs
- TdsParserStaticMethods.cs
- WsdlParser.cs
- XPathSelfQuery.cs
- Boolean.cs
- CommonXSendMessage.cs
- codemethodreferenceexpression.cs
- SubMenuStyleCollection.cs
- NativeObjectSecurity.cs
- CompilationUtil.cs
- TouchDevice.cs
- DBSchemaRow.cs
- _HelperAsyncResults.cs
- WebRequest.cs
- XmlQueryOutput.cs
- PrincipalPermission.cs
- SpellerInterop.cs
- ReturnEventArgs.cs
- SequenceDesignerAccessibleObject.cs
- ProtocolViolationException.cs
- Application.cs
- followingsibling.cs
- GridViewRowEventArgs.cs
- DTCTransactionManager.cs
- TemplateControlCodeDomTreeGenerator.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- TemplateEditingVerb.cs
- NameValueCache.cs
- XmlPreloadedResolver.cs
- lengthconverter.cs
- EncoderParameter.cs
- PartialList.cs
- HttpRuntimeSection.cs
- ToolBarPanel.cs
- KeyTimeConverter.cs
- ListViewHitTestInfo.cs
- AttributeEmitter.cs
- Script.cs
- XsltInput.cs
- SqlErrorCollection.cs
- HttpSocketManager.cs
- Attributes.cs
- Decimal.cs
- ArrayWithOffset.cs
- HtmlTableCellCollection.cs
- AssemblyAssociatedContentFileAttribute.cs
- MergeEnumerator.cs
- ClientSponsor.cs
- HashCodeCombiner.cs
- ResolveNameEventArgs.cs
- NonSerializedAttribute.cs
- Base64WriteStateInfo.cs
- UshortList2.cs
- InstanceStore.cs
- TreeBuilder.cs
- EmptyEnumerator.cs
- AccessDataSourceDesigner.cs
- PointConverter.cs
- WebPartMovingEventArgs.cs
- EntitySqlException.cs
- IISUnsafeMethods.cs
- ServerIdentity.cs
- WebServiceTypeData.cs
- HttpDictionary.cs
- PenCursorManager.cs
- HtmlShimManager.cs
- DataGridColumnCollection.cs
- OpenTypeCommon.cs
- FormatException.cs
- HuffmanTree.cs
- XmlEncoding.cs
- FaultReasonText.cs
- __Filters.cs
- ReferenceSchema.cs
- FormatConvertedBitmap.cs
- TdsParser.cs
- EpmTargetPathSegment.cs
- DataGridViewAccessibleObject.cs
- ChtmlTextBoxAdapter.cs
- MatrixAnimationUsingKeyFrames.cs
- UniqueID.cs
- ToolboxCategoryItems.cs
- DataConnectionHelper.cs
- StickyNoteContentControl.cs
- ExtendedPropertyDescriptor.cs
- OleDbConnectionFactory.cs
- WebBrowserHelper.cs
- CodeEntryPointMethod.cs
- TopClause.cs
- WebPartDisplayModeCollection.cs