Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / common / managed / GlobalAllocSafeHandle.cs / 1 / 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 race 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ObjectKeyFrameCollection.cs
- EdmProviderManifest.cs
- BackgroundFormatInfo.cs
- RandomNumberGenerator.cs
- InsufficientMemoryException.cs
- SrgsDocument.cs
- DocumentViewerConstants.cs
- MetafileHeaderWmf.cs
- UInt16Storage.cs
- SamlAction.cs
- MyContact.cs
- RsaEndpointIdentity.cs
- Guid.cs
- DynamicQueryableWrapper.cs
- CompilerGeneratedAttribute.cs
- AppDomainAttributes.cs
- _ListenerRequestStream.cs
- CodeConditionStatement.cs
- BufferedStream.cs
- SendSecurityHeaderElement.cs
- TextTabProperties.cs
- WorkflowHostingResponseContext.cs
- ThemeDictionaryExtension.cs
- QueryExecutionOption.cs
- Delegate.cs
- CategoriesDocument.cs
- BaseTypeViewSchema.cs
- DataObjectFieldAttribute.cs
- XmlSignificantWhitespace.cs
- IntPtr.cs
- PassportAuthentication.cs
- NetPeerTcpBinding.cs
- BitmapData.cs
- PointConverter.cs
- CanonicalizationDriver.cs
- WebPartConnectionsCloseVerb.cs
- NativeRightsManagementAPIsStructures.cs
- WorkflowServiceHostFactory.cs
- ByteStorage.cs
- MarkupObject.cs
- Screen.cs
- CharAnimationBase.cs
- RequiredAttributeAttribute.cs
- XmlSchemaObjectTable.cs
- DecimalConstantAttribute.cs
- ExceptionRoutedEventArgs.cs
- InvokeProviderWrapper.cs
- AttachmentService.cs
- Publisher.cs
- HtmlInputSubmit.cs
- ModelFactory.cs
- HijriCalendar.cs
- PrimitiveXmlSerializers.cs
- ObjectContextServiceProvider.cs
- SqlCommandSet.cs
- IdentityHolder.cs
- BuildProvider.cs
- DataRowExtensions.cs
- CounterNameConverter.cs
- DBNull.cs
- WebPartMinimizeVerb.cs
- listviewsubitemcollectioneditor.cs
- TypedReference.cs
- DrawingState.cs
- ObjRef.cs
- EnumMember.cs
- QueryTaskGroupState.cs
- PassportPrincipal.cs
- XmlSchemaExporter.cs
- FontConverter.cs
- WarningException.cs
- HMACSHA1.cs
- FloaterParagraph.cs
- x509store.cs
- StrokeCollection2.cs
- RpcResponse.cs
- EditingCoordinator.cs
- MenuCommand.cs
- PathGradientBrush.cs
- MetadataItem_Static.cs
- RawStylusInputReport.cs
- CodeBinaryOperatorExpression.cs
- Model3D.cs
- ChannelManager.cs
- MetadataLocation.cs
- ServicesUtilities.cs
- HexParser.cs
- DataGridViewHitTestInfo.cs
- CounterCreationDataConverter.cs
- NetStream.cs
- ContractReference.cs
- AnnotationResourceCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- Exceptions.cs
- DataGridViewCellStyle.cs
- DeclarativeCatalogPart.cs
- AsyncPostBackErrorEventArgs.cs
- GridLengthConverter.cs
- SqlStatistics.cs
- DataGridViewAdvancedBorderStyle.cs