Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / SafeReversePInvokeHandle.cs / 1305600 / SafeReversePInvokeHandle.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: // A safe way to deal with unmanaged MIL interface pointers. //--------------------------------------------------------------------------- using System; using System.IO; using System.Security; using System.Security.Permissions; using System.Collections; using System.Reflection; using MS.Internal; using MS.Win32; using System.Diagnostics; using System.Windows.Media; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using Microsoft.Win32.SafeHandles; using Microsoft.Internal; using UnsafeNativeMethods=MS.Win32.PresentationCore.UnsafeNativeMethods; namespace System.Windows.Media { internal class SafeReversePInvokeWrapper : SafeHandleZeroOrMinusOneIsInvalid { ////// Use this constructor if the handle isn't ready yet and later /// set the handle with SetHandle. SafeMILHandle owns the release /// of the handle. /// ////// Critical: This derives from a class that has a link demand and inheritance demand /// TreatAsSafe: Ok to call constructor /// [SecurityCritical] internal SafeReversePInvokeWrapper() : base(true) { } ////// Use this constructor if the handle exists at construction time. /// SafeMILHandle owns the release of the parameter. /// ////// Calls into native code to wrap a reverse p-invoke delegate into a CReversePInvokeDelegateWrapper. /// [SecurityCritical] internal SafeReversePInvokeWrapper(IntPtr delegatePtr) : base(true) { // Wrap the reverse p-invoke into a reversePInvokeWrapper. IntPtr reversePInvokeWrapper; HRESULT.Check(UnsafeNativeMethods.MilCoreApi.MilCreateReversePInvokeWrapper(delegatePtr, out reversePInvokeWrapper)); SetHandle(reversePInvokeWrapper); } ////// Critical - calls unmanaged code, not treat as safe because you must /// validate that handle is a valid COM object. /// [SecurityCritical] protected override bool ReleaseHandle() { if (handle != IntPtr.Zero) { UnsafeNativeMethods.MilCoreApi.MilReleasePInvokePtrBlocking(handle); } UnsafeNativeMethods.MILUnknown.ReleaseInterface(ref handle); return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GridViewCommandEventArgs.cs
- _OverlappedAsyncResult.cs
- storepermission.cs
- MenuItemBinding.cs
- InkCanvasSelectionAdorner.cs
- SqlAliasesReferenced.cs
- StaticFileHandler.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- SpellerError.cs
- FastPropertyAccessor.cs
- SQLSingleStorage.cs
- URLString.cs
- WindowProviderWrapper.cs
- RecordsAffectedEventArgs.cs
- DataGridViewCellStyleChangedEventArgs.cs
- SimpleBitVector32.cs
- DrawingGroup.cs
- ObjectViewEntityCollectionData.cs
- ADRole.cs
- BaseTemplateCodeDomTreeGenerator.cs
- RepeaterCommandEventArgs.cs
- ManagementObjectSearcher.cs
- DirtyTextRange.cs
- ConnectionConsumerAttribute.cs
- SystemIcmpV4Statistics.cs
- DataTableReaderListener.cs
- EventlogProvider.cs
- Win32MouseDevice.cs
- loginstatus.cs
- RoleService.cs
- BrowserDefinition.cs
- _ContextAwareResult.cs
- HtmlValidationSummaryAdapter.cs
- SqlResolver.cs
- LifetimeManager.cs
- OdbcStatementHandle.cs
- HybridDictionary.cs
- RemotingConfiguration.cs
- DataViewSettingCollection.cs
- Converter.cs
- AssemblyAttributes.cs
- XmlSchemaValidationException.cs
- messageonlyhwndwrapper.cs
- DrawingCollection.cs
- QueueProcessor.cs
- Freezable.cs
- ProcessModuleCollection.cs
- KeyValueInternalCollection.cs
- IFlowDocumentViewer.cs
- InheritanceRules.cs
- LogicalMethodInfo.cs
- DesignerAdRotatorAdapter.cs
- SynchronizationLockException.cs
- XmlSerializationReader.cs
- ValidationSettings.cs
- DynamicActivityTypeDescriptor.cs
- SHA1.cs
- BindingManagerDataErrorEventArgs.cs
- HttpServerChannel.cs
- DataTableReader.cs
- ShapingEngine.cs
- ContainerUtilities.cs
- DataTableTypeConverter.cs
- XPathDocumentIterator.cs
- PerspectiveCamera.cs
- NotFiniteNumberException.cs
- DbMetaDataColumnNames.cs
- FlowPanelDesigner.cs
- GPRECTF.cs
- XmlSchemaType.cs
- EventTrigger.cs
- XPathDocument.cs
- CompositeDuplexBindingElementImporter.cs
- BooleanKeyFrameCollection.cs
- Triangle.cs
- ActiveXSite.cs
- Schema.cs
- ResourcePool.cs
- StoreContentChangedEventArgs.cs
- NumericUpDownAccelerationCollection.cs
- XmlMembersMapping.cs
- TextDecorationCollection.cs
- VirtualDirectoryMapping.cs
- ScriptResourceHandler.cs
- UnwrappedTypesXmlSerializerManager.cs
- TraceRecord.cs
- ResourcePermissionBaseEntry.cs
- Point3DCollectionValueSerializer.cs
- TraversalRequest.cs
- XmlSchemaInferenceException.cs
- TypefaceMap.cs
- FloatUtil.cs
- ToolStripItem.cs
- IResourceProvider.cs
- DeclaredTypeValidatorAttribute.cs
- RuleSet.cs
- NetworkCredential.cs
- FontSource.cs
- TextFormatterContext.cs
- PhysicalAddress.cs