Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // 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
![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
- SiteOfOriginPart.cs
- NumericUpDownAcceleration.cs
- QilStrConcatenator.cs
- Size3D.cs
- GroupQuery.cs
- WSSecureConversationDec2005.cs
- KnownTypeAttribute.cs
- EditorZoneAutoFormat.cs
- SqlNodeAnnotation.cs
- ObjectToModelValueConverter.cs
- StylusPointPropertyInfo.cs
- CodeChecksumPragma.cs
- FilteredDataSetHelper.cs
- Point3DAnimationUsingKeyFrames.cs
- InternalCache.cs
- ScrollContentPresenter.cs
- XPathNodeIterator.cs
- UntrustedRecipientException.cs
- CodeAttributeDeclaration.cs
- PageThemeBuildProvider.cs
- TimeStampChecker.cs
- ListViewDesigner.cs
- _SafeNetHandles.cs
- HttpVersion.cs
- Listbox.cs
- NamedPipeConnectionPoolSettingsElement.cs
- DependencyPropertyConverter.cs
- Fx.cs
- DataSourceCacheDurationConverter.cs
- QilXmlReader.cs
- EventMemberCodeDomSerializer.cs
- Enum.cs
- WeakReferenceEnumerator.cs
- ReflectionServiceProvider.cs
- mediaeventargs.cs
- MouseActionConverter.cs
- FileDialog.cs
- Ray3DHitTestResult.cs
- ContextMenuService.cs
- StrokeNodeData.cs
- CodeAccessSecurityEngine.cs
- DynamicDataExtensions.cs
- InitializerFacet.cs
- SignedXmlDebugLog.cs
- TemplateInstanceAttribute.cs
- ArrayListCollectionBase.cs
- ColorMatrix.cs
- EntityConnection.cs
- IIS7UserPrincipal.cs
- WebPartManager.cs
- CharacterHit.cs
- EventArgs.cs
- HitTestParameters.cs
- ConnectionStringsExpressionBuilder.cs
- UpDownBase.cs
- Baml2006KnownTypes.cs
- XpsS0ValidatingLoader.cs
- BookmarkWorkItem.cs
- WebBrowserDocumentCompletedEventHandler.cs
- CatalogZone.cs
- ChangeDirector.cs
- CoTaskMemHandle.cs
- Menu.cs
- BindingCompleteEventArgs.cs
- EditorZoneBase.cs
- Comparer.cs
- SoapObjectInfo.cs
- sqlinternaltransaction.cs
- FormViewDeletedEventArgs.cs
- SafeNativeMethods.cs
- XmlSchemaType.cs
- QualificationDataAttribute.cs
- XmlEncodedRawTextWriter.cs
- ToolStripContainerActionList.cs
- TouchFrameEventArgs.cs
- TreeViewDataItemAutomationPeer.cs
- ViewStateModeByIdAttribute.cs
- Helpers.cs
- FloaterParaClient.cs
- DbDataSourceEnumerator.cs
- RunInstallerAttribute.cs
- ParameterInfo.cs
- DynamicDataExtensions.cs
- PageParser.cs
- RawStylusInput.cs
- RawStylusSystemGestureInputReport.cs
- TypeInfo.cs
- IntPtr.cs
- TextSerializer.cs
- TransformValueSerializer.cs
- PageContentCollection.cs
- ClientScriptManager.cs
- ADRole.cs
- CursorInteropHelper.cs
- SHA512.cs
- StorageInfo.cs
- Win32Native.cs
- XmlNodeComparer.cs
- ZoneLinkButton.cs
- Imaging.cs