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
- CodeDomConfigurationHandler.cs
- TypeInitializationException.cs
- FixedDocument.cs
- TransformGroup.cs
- InvokeBase.cs
- MarshalByRefObject.cs
- DateTimeFormat.cs
- HttpRuntime.cs
- DockPanel.cs
- DataGrid.cs
- DataTableClearEvent.cs
- CheckPair.cs
- HandlerWithFactory.cs
- ProtocolViolationException.cs
- XmlAttributeCache.cs
- RepeaterCommandEventArgs.cs
- Registry.cs
- LayoutEvent.cs
- Keywords.cs
- TypeConstant.cs
- InfoCardBinaryReader.cs
- RoleService.cs
- DataGridCellItemAutomationPeer.cs
- AttachInfo.cs
- InstanceKeyNotReadyException.cs
- TypeDescriptorContext.cs
- AssemblyFilter.cs
- InfiniteIntConverter.cs
- Clause.cs
- AssemblyUtil.cs
- ImmutableAssemblyCacheEntry.cs
- RegexCompiler.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- IisTraceListener.cs
- _DynamicWinsockMethods.cs
- XmlEncoding.cs
- BindingListCollectionView.cs
- PropertyValueUIItem.cs
- ResourceCollectionInfo.cs
- StrokeIntersection.cs
- OracleMonthSpan.cs
- InvalidOleVariantTypeException.cs
- _ProxyRegBlob.cs
- XPathMessageFilterElement.cs
- DataControlFieldHeaderCell.cs
- DateBoldEvent.cs
- PageEventArgs.cs
- UserPreferenceChangedEventArgs.cs
- XmlEncoding.cs
- AsyncDataRequest.cs
- EncryptRequest.cs
- PointHitTestResult.cs
- CustomMenuItemCollection.cs
- Int32KeyFrameCollection.cs
- StreamReader.cs
- GridEntry.cs
- AnnotationStore.cs
- TcpActivation.cs
- COAUTHIDENTITY.cs
- BuildProviderAppliesToAttribute.cs
- TraceHandlerErrorFormatter.cs
- XmlTextReaderImpl.cs
- PageThemeCodeDomTreeGenerator.cs
- activationcontext.cs
- TableChangeProcessor.cs
- MobileSysDescriptionAttribute.cs
- EntityTemplateUserControl.cs
- ValueSerializer.cs
- Authorization.cs
- EntitySetRetriever.cs
- Line.cs
- TabControl.cs
- ComponentEditorForm.cs
- SQLBinaryStorage.cs
- ClusterSafeNativeMethods.cs
- EncodingInfo.cs
- WindowInteropHelper.cs
- TypefaceMetricsCache.cs
- Package.cs
- XpsImage.cs
- ISFTagAndGuidCache.cs
- StringConverter.cs
- Site.cs
- UserMapPath.cs
- DataGridPagerStyle.cs
- InkCanvasAutomationPeer.cs
- SafeJobHandle.cs
- DataSourceHelper.cs
- DrawingContextDrawingContextWalker.cs
- AutomationProperties.cs
- ToolBarTray.cs
- ScriptingWebServicesSectionGroup.cs
- autovalidator.cs
- TextRangeAdaptor.cs
- ViewSimplifier.cs
- errorpatternmatcher.cs
- DataTableClearEvent.cs
- HttpProfileBase.cs
- RotationValidation.cs
- StylusPlugInCollection.cs