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
- FixedFlowMap.cs
- MetadataItem.cs
- ImportContext.cs
- BindingMAnagerBase.cs
- TickBar.cs
- StyleTypedPropertyAttribute.cs
- ExtensionSurface.cs
- ContextInformation.cs
- RNGCryptoServiceProvider.cs
- X509Certificate.cs
- TemplateBaseAction.cs
- EntityUtil.cs
- ToolboxSnapDragDropEventArgs.cs
- TripleDES.cs
- BuilderElements.cs
- NativeRightsManagementAPIsStructures.cs
- ScrollPattern.cs
- HttpPostedFileBase.cs
- UnknownBitmapEncoder.cs
- PenThreadWorker.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- TreeView.cs
- ObjectKeyFrameCollection.cs
- precedingsibling.cs
- WebPartConnectionCollection.cs
- LineBreakRecord.cs
- SchemaSetCompiler.cs
- DataSourceHelper.cs
- MessageEncodingBindingElement.cs
- COM2ColorConverter.cs
- ResponseBodyWriter.cs
- HostedBindingBehavior.cs
- ReverseInheritProperty.cs
- WindowsStatic.cs
- BindingGroup.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ViewStateModeByIdAttribute.cs
- ParserExtension.cs
- OpenCollectionAsyncResult.cs
- Listbox.cs
- SelectionRangeConverter.cs
- GlobalItem.cs
- Substitution.cs
- AxImporter.cs
- TcpClientChannel.cs
- PerformanceCounterManager.cs
- TraceData.cs
- documentsequencetextcontainer.cs
- HttpAsyncResult.cs
- DynamicMethod.cs
- DesignerActionPropertyItem.cs
- FrameSecurityDescriptor.cs
- DocumentsTrace.cs
- LeafCellTreeNode.cs
- GCHandleCookieTable.cs
- ViewManager.cs
- XmlSchemaAnyAttribute.cs
- KeyboardDevice.cs
- ContextStack.cs
- XD.cs
- NameValueConfigurationCollection.cs
- CodeNamespaceCollection.cs
- BinaryConverter.cs
- ValuePatternIdentifiers.cs
- SqlDataSource.cs
- VSWCFServiceContractGenerator.cs
- PathSegmentCollection.cs
- StateMachineWorkflowDesigner.cs
- ServiceModelExtensionElement.cs
- SecurityDescriptor.cs
- WinFormsSpinner.cs
- AssemblyContextControlItem.cs
- WebBrowserBase.cs
- StylusPointPropertyInfo.cs
- ShaderRenderModeValidation.cs
- BaseTemplateCodeDomTreeGenerator.cs
- backend.cs
- MimeXmlImporter.cs
- SqlServer2KCompatibilityAnnotation.cs
- FrameworkTextComposition.cs
- ErrorFormatter.cs
- bindurihelper.cs
- unsafeIndexingFilterStream.cs
- ProviderCollection.cs
- CompilerState.cs
- RsaSecurityKey.cs
- EmptyElement.cs
- DbException.cs
- HotSpot.cs
- ResourceContainer.cs
- RpcAsyncResult.cs
- StaticFileHandler.cs
- TextTrailingWordEllipsis.cs
- XmlC14NWriter.cs
- StateItem.cs
- TriState.cs
- RolePrincipal.cs
- TemplateContent.cs
- CompilerResults.cs
- WebEvents.cs