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
- RawStylusSystemGestureInputReport.cs
- Gdiplus.cs
- MetadataCacheItem.cs
- TriState.cs
- Bitmap.cs
- XPathLexer.cs
- SafeRightsManagementSessionHandle.cs
- SkewTransform.cs
- GetWinFXPath.cs
- MetadataExchangeClient.cs
- Soap12ProtocolReflector.cs
- FixedSOMImage.cs
- DataGrid.cs
- AnnotationObservableCollection.cs
- Scene3D.cs
- invalidudtexception.cs
- AccessedThroughPropertyAttribute.cs
- XmlReader.cs
- StreamInfo.cs
- AppLevelCompilationSectionCache.cs
- CursorConverter.cs
- EventLog.cs
- ParserHooks.cs
- MLangCodePageEncoding.cs
- KoreanCalendar.cs
- IndependentAnimationStorage.cs
- WorkerRequest.cs
- MissingFieldException.cs
- TextServicesCompartment.cs
- loginstatus.cs
- Visitors.cs
- VirtualDirectoryMapping.cs
- DataGridViewCheckBoxCell.cs
- SpellerHighlightLayer.cs
- ProtocolReflector.cs
- DataControlButton.cs
- MdiWindowListItemConverter.cs
- CheckBoxDesigner.cs
- FileRecordSequenceHelper.cs
- GraphicsState.cs
- ColumnMap.cs
- XPathException.cs
- WebServiceFault.cs
- Crc32.cs
- SymbolMethod.cs
- GridViewRowCollection.cs
- StrokeCollectionDefaultValueFactory.cs
- DeclaredTypeElement.cs
- CapabilitiesState.cs
- IisTraceWebEventProvider.cs
- ComboBoxAutomationPeer.cs
- SiteMapNode.cs
- Metadata.cs
- DynamicDataExtensions.cs
- LocalFileSettingsProvider.cs
- ResourceContainerWrapper.cs
- HttpStreamMessage.cs
- hresults.cs
- CallbackBehaviorAttribute.cs
- Socket.cs
- VisualTransition.cs
- OdbcInfoMessageEvent.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- ConfigUtil.cs
- Predicate.cs
- TypeLoadException.cs
- IRCollection.cs
- BamlLocalizableResource.cs
- BinaryObjectInfo.cs
- SendSecurityHeaderElementContainer.cs
- ScriptReferenceBase.cs
- EvidenceTypeDescriptor.cs
- DataColumn.cs
- ViewValidator.cs
- _DisconnectOverlappedAsyncResult.cs
- UiaCoreProviderApi.cs
- Rectangle.cs
- BindingNavigator.cs
- ProxySimple.cs
- RC2.cs
- ToolTip.cs
- ErrorFormatterPage.cs
- XPathPatternParser.cs
- PropertyDescriptorComparer.cs
- PenThreadPool.cs
- VideoDrawing.cs
- IsolatedStorageException.cs
- SchemeSettingElementCollection.cs
- OleDbConnectionInternal.cs
- StyleXamlParser.cs
- ColorTranslator.cs
- CodeTryCatchFinallyStatement.cs
- ToolboxItemFilterAttribute.cs
- Maps.cs
- ObjectDataSourceStatusEventArgs.cs
- SignatureHelper.cs
- CommandBinding.cs
- SuppressMessageAttribute.cs
- TextPattern.cs
- SqlMethodAttribute.cs