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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GeometryDrawing.cs
- PixelFormatConverter.cs
- BinaryReader.cs
- PropertyInformation.cs
- ServiceEndpointElementCollection.cs
- BinaryMethodMessage.cs
- BindToObject.cs
- TreeNodeBindingDepthConverter.cs
- TextEditorParagraphs.cs
- PropertyValueUIItem.cs
- MemberProjectedSlot.cs
- ISessionStateStore.cs
- X509PeerCertificateAuthentication.cs
- DecodeHelper.cs
- AspNetCacheProfileAttribute.cs
- XsltLoader.cs
- BaseTreeIterator.cs
- ReplacementText.cs
- Quad.cs
- ContentPathSegment.cs
- AsyncPostBackErrorEventArgs.cs
- PrinterSettings.cs
- HeaderUtility.cs
- XslException.cs
- ToolBarOverflowPanel.cs
- QuaternionAnimation.cs
- TimelineGroup.cs
- XmlLoader.cs
- CallbackValidator.cs
- smtppermission.cs
- SelfIssuedTokenFactoryCredential.cs
- SafeEventLogWriteHandle.cs
- FullTextLine.cs
- XmlKeywords.cs
- WSHttpSecurity.cs
- StorageInfo.cs
- RuleInfoComparer.cs
- HttpException.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- SafeEventLogWriteHandle.cs
- Panel.cs
- RegexStringValidatorAttribute.cs
- BinaryParser.cs
- OracleConnectionStringBuilder.cs
- BitmapMetadataEnumerator.cs
- RuleSettingsCollection.cs
- BidPrivateBase.cs
- HttpCacheVaryByContentEncodings.cs
- XmlSchemaCollection.cs
- BuildProviderCollection.cs
- ExtendedPropertyCollection.cs
- StylusPointProperty.cs
- DataGridHeaderBorder.cs
- DoubleAnimationUsingPath.cs
- HebrewCalendar.cs
- InternalConfigHost.cs
- CharacterMetricsDictionary.cs
- BorderGapMaskConverter.cs
- StagingAreaInputItem.cs
- HeaderedContentControl.cs
- CompiledAction.cs
- Nullable.cs
- PropertyChangeTracker.cs
- ThrowHelper.cs
- CompilationRelaxations.cs
- X509Certificate.cs
- precedingsibling.cs
- Margins.cs
- MethodRental.cs
- InternalPermissions.cs
- PlatformCulture.cs
- ParagraphVisual.cs
- TreeChangeInfo.cs
- SoapClientMessage.cs
- ColumnCollection.cs
- DataGridColumn.cs
- TextContainerChangeEventArgs.cs
- IntegrationExceptionEventArgs.cs
- DesignerCommandSet.cs
- XmlSchemaValidator.cs
- SmiConnection.cs
- CaseInsensitiveHashCodeProvider.cs
- ObjectListField.cs
- WindowInteractionStateTracker.cs
- OdbcEnvironment.cs
- LinkButton.cs
- CustomCredentialPolicy.cs
- Missing.cs
- KoreanCalendar.cs
- sqlcontext.cs
- FileSystemWatcher.cs
- MessageQueueKey.cs
- WorkflowControlEndpoint.cs
- EntityDesignPluralizationHandler.cs
- documentsequencetextpointer.cs
- ImageAutomationPeer.cs
- XsdBuildProvider.cs
- MailWebEventProvider.cs
- PolicyStatement.cs
- _WinHttpWebProxyDataBuilder.cs