Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / infocard / common / managed / GlobalAllocSafeHandle.cs / 1305376 / GlobalAllocSafeHandle.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Runtime.ConstrainedExecution; using System.Security; using Microsoft.InfoCards.Diagnostics; using IDT=Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary: // Provides a wrapper over memory allocated by GlobalAlloc // guaranteeing that it will be freed during rude thread / appdomain unloads. // Remarks: // There is a small ---- in the usage of this class, as it is used to wrap return parameters // immediatley following the function return. // internal class GlobalAllocSafeHandle : SafeHandle { [SuppressUnmanagedCodeSecurity] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [DllImport("Kernel32.dll", EntryPoint="RtlZeroMemory", SetLastError=false)] public static extern void ZeroMemory( IntPtr dest, Int32 size ); [SuppressUnmanagedCodeSecurity] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [DllImport( "kernel32.dll", CallingConvention = CallingConvention.StdCall )] public static extern IntPtr GlobalFree( IntPtr hMem ); // // How many bytes we currently wrap. This can be zero, as our usage allows for a valid handle // backed by 0 bytes of allocated memory - specificially TransformBlock and TransformFinalBlock // can return this by design. // private int m_bytes; private GlobalAllocSafeHandle() : base( IntPtr.Zero, true ) { m_bytes = 0; } public int Length { set{ m_bytes = value; } get{ return m_bytes; } } public override bool IsInvalid { get { return ( IntPtr.Zero == base.handle ); } } // // Summary: // Clear the data held and release the memory. // protected override bool ReleaseHandle() { if( m_bytes > 0 ) { ZeroMemory( base.handle, m_bytes ); GlobalFree( base.handle ); m_bytes = 0; } return true; } } } // 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
- ThreadInterruptedException.cs
- StringDictionaryEditor.cs
- MetadataCacheItem.cs
- CompModHelpers.cs
- WorkflowDebuggerSteppingAttribute.cs
- PersonalizationStateInfo.cs
- CallbackValidatorAttribute.cs
- InvokeProviderWrapper.cs
- EllipseGeometry.cs
- EntityStoreSchemaGenerator.cs
- WebPartVerb.cs
- PartManifestEntry.cs
- EmbeddedMailObjectsCollection.cs
- DesignerProperties.cs
- MouseEvent.cs
- TreeWalkHelper.cs
- DesignerView.xaml.cs
- WebBrowser.cs
- TransactionContext.cs
- ImageListStreamer.cs
- TargetControlTypeCache.cs
- QueryStringParameter.cs
- URL.cs
- WebControlsSection.cs
- AddInController.cs
- SqlUdtInfo.cs
- ObjectAssociationEndMapping.cs
- ComponentFactoryHelpers.cs
- Parameter.cs
- HtmlInputButton.cs
- AttachedPropertyMethodSelector.cs
- _NegoStream.cs
- objectresult_tresulttype.cs
- CultureInfoConverter.cs
- OrderedEnumerableRowCollection.cs
- AuthenticationManager.cs
- XmlQueryCardinality.cs
- ToolStripButton.cs
- XmlUtil.cs
- TrackingQueryElement.cs
- ResolvedKeyFrameEntry.cs
- XmlnsDictionary.cs
- RegexGroupCollection.cs
- WmiEventSink.cs
- SchemaCollectionCompiler.cs
- RC2CryptoServiceProvider.cs
- CommandLineParser.cs
- NotificationContext.cs
- ConfigXmlAttribute.cs
- DetailsViewRowCollection.cs
- WebPartDescriptionCollection.cs
- NominalTypeEliminator.cs
- ValidationVisibilityAttribute.cs
- DesignTimeType.cs
- DnsEndPoint.cs
- DebugView.cs
- InkCanvasFeedbackAdorner.cs
- GridViewUpdatedEventArgs.cs
- FontFamilyIdentifier.cs
- MultiByteCodec.cs
- PackWebResponse.cs
- Directory.cs
- Ipv6Element.cs
- Wildcard.cs
- DisplayMemberTemplateSelector.cs
- WebBrowser.cs
- EncoderBestFitFallback.cs
- ExpandCollapsePattern.cs
- UserControl.cs
- URL.cs
- LinearGradientBrush.cs
- ToolStripSplitStackLayout.cs
- Region.cs
- RoleGroupCollection.cs
- ProcessHostFactoryHelper.cs
- ScrollItemPatternIdentifiers.cs
- PDBReader.cs
- RegexBoyerMoore.cs
- Font.cs
- DataGridViewCellFormattingEventArgs.cs
- AnnotationHighlightLayer.cs
- CodeDomSerializationProvider.cs
- FormViewDeletedEventArgs.cs
- SecurityTokenTypes.cs
- LostFocusEventManager.cs
- DelegatingConfigHost.cs
- IRCollection.cs
- StateFinalizationActivity.cs
- Point3DCollection.cs
- PermissionListSet.cs
- XMLDiffLoader.cs
- WindowsComboBox.cs
- SQLUtility.cs
- EdmComplexTypeAttribute.cs
- HttpInputStream.cs
- ObjectParameterCollection.cs
- SqlDataSourceStatusEventArgs.cs
- __Filters.cs
- HttpListenerException.cs
- TypeDescriptionProviderAttribute.cs