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
- ListBoxChrome.cs
- DNS.cs
- NavigationPropertyEmitter.cs
- ManualResetEvent.cs
- RegexWorker.cs
- CompoundFileIOPermission.cs
- SerializationEventsCache.cs
- ColumnWidthChangingEvent.cs
- _IPv6Address.cs
- ExtensionsSection.cs
- WebColorConverter.cs
- XamlSerializationHelper.cs
- ListParagraph.cs
- Automation.cs
- AuthenticationServiceManager.cs
- Activity.cs
- SymbolDocumentInfo.cs
- Metafile.cs
- DateBoldEvent.cs
- DetailsViewUpdatedEventArgs.cs
- ExceptionHandler.cs
- SimpleLine.cs
- EventLogInformation.cs
- RemotingAttributes.cs
- CallContext.cs
- ResourceSetExpression.cs
- TextUtf8RawTextWriter.cs
- keycontainerpermission.cs
- MetadataUtilsSmi.cs
- Update.cs
- CacheEntry.cs
- Int64Animation.cs
- DBSchemaRow.cs
- NTAccount.cs
- WindowsPen.cs
- SystemIPGlobalStatistics.cs
- EntityCommandDefinition.cs
- RegularExpressionValidator.cs
- Point4D.cs
- ServiceX509SecurityTokenProvider.cs
- ConnectionOrientedTransportChannelFactory.cs
- filewebresponse.cs
- DataListDesigner.cs
- SQLDateTimeStorage.cs
- HttpModuleCollection.cs
- OperationAbortedException.cs
- bindurihelper.cs
- DockAndAnchorLayout.cs
- Substitution.cs
- CalculatedColumn.cs
- PostBackOptions.cs
- SchemaCollectionCompiler.cs
- ReflectionPermission.cs
- UnsafeNativeMethods.cs
- FixedSOMTableRow.cs
- DelegateBodyWriter.cs
- NamespaceCollection.cs
- DataGridViewRowCollection.cs
- IMembershipProvider.cs
- UnsafeNativeMethodsCLR.cs
- SecurityTokenResolver.cs
- StringComparer.cs
- _HeaderInfoTable.cs
- DataBindingList.cs
- ComplexBindingPropertiesAttribute.cs
- FullTextBreakpoint.cs
- SafeThreadHandle.cs
- DES.cs
- LassoSelectionBehavior.cs
- SqlNotificationEventArgs.cs
- TextDecorationCollection.cs
- DataSourceListEditor.cs
- WebPartConnectionsCancelVerb.cs
- EnvironmentPermission.cs
- CustomExpressionEventArgs.cs
- ProgressBarRenderer.cs
- XmlSchemaObjectCollection.cs
- ExtensionSimplifierMarkupObject.cs
- PrintPageEvent.cs
- QilTypeChecker.cs
- WindowsToolbarItemAsMenuItem.cs
- UnsafeNativeMethods.cs
- Metafile.cs
- IItemContainerGenerator.cs
- DataTableReaderListener.cs
- SecurityToken.cs
- SelectingProviderEventArgs.cs
- DataGridViewCellParsingEventArgs.cs
- UnknownWrapper.cs
- ViewKeyConstraint.cs
- LiteralDesigner.cs
- CmsInterop.cs
- AutomationTextAttribute.cs
- TemplateManager.cs
- httpstaticobjectscollection.cs
- TextureBrush.cs
- ErrorWebPart.cs
- HttpCachePolicyBase.cs
- SchemaInfo.cs
- DependencyPropertyValueSerializer.cs