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
- StatusBarPanelClickEvent.cs
- XAMLParseException.cs
- OLEDB_Enum.cs
- ProtocolsConfigurationEntry.cs
- QueryCorrelationInitializer.cs
- XPathPatternParser.cs
- InputLanguageCollection.cs
- XmlTextReaderImpl.cs
- XmlSchemaSimpleContentRestriction.cs
- SQLDateTime.cs
- ScopeCompiler.cs
- MarkupCompilePass1.cs
- FixUpCollection.cs
- CheckBox.cs
- DataGridToolTip.cs
- UnlockCardRequest.cs
- EncodingDataItem.cs
- ConnectionsZoneAutoFormat.cs
- DataServiceException.cs
- TypeBuilder.cs
- JapaneseCalendar.cs
- HMACSHA384.cs
- ConfigurationElementCollection.cs
- HostProtectionPermission.cs
- EmptyEnumerator.cs
- CustomError.cs
- XmlSchemaAnyAttribute.cs
- Win32KeyboardDevice.cs
- TimeoutTimer.cs
- DynamicILGenerator.cs
- ObjectDataSourceSelectingEventArgs.cs
- CallContext.cs
- HybridWebProxyFinder.cs
- FrameworkElementAutomationPeer.cs
- SafeIUnknown.cs
- XmlCharCheckingWriter.cs
- BitmapEffectState.cs
- HttpContextWrapper.cs
- ServiceEndpointCollection.cs
- LineGeometry.cs
- ColorContext.cs
- ConstructorArgumentAttribute.cs
- Filter.cs
- LexicalChunk.cs
- UrlRoutingModule.cs
- ReservationCollection.cs
- RoleService.cs
- LinqDataSourceStatusEventArgs.cs
- DbConnectionStringBuilder.cs
- EntityContainerEmitter.cs
- BufferedGraphics.cs
- FullTextLine.cs
- WorkflowServiceHostFactory.cs
- SchemaImporterExtensionsSection.cs
- Sql8ConformanceChecker.cs
- UnsafeNativeMethods.cs
- DataServiceRequestOfT.cs
- XamlTreeBuilderBamlRecordWriter.cs
- SkipQueryOptionExpression.cs
- UnhandledExceptionEventArgs.cs
- Padding.cs
- ObjectDataSourceDisposingEventArgs.cs
- XmlDictionaryString.cs
- ServerProtocol.cs
- StringAttributeCollection.cs
- FigureHelper.cs
- QuaternionKeyFrameCollection.cs
- DefaultParameterValueAttribute.cs
- HttpFileCollection.cs
- AddingNewEventArgs.cs
- WebConvert.cs
- CodeRemoveEventStatement.cs
- IdentityNotMappedException.cs
- InstanceOwnerQueryResult.cs
- FixedPageAutomationPeer.cs
- ContractNamespaceAttribute.cs
- ObjectDataSourceSelectingEventArgs.cs
- BeginStoryboard.cs
- CodeSnippetTypeMember.cs
- ConvertEvent.cs
- LifetimeServices.cs
- FrameworkObject.cs
- ActiveXHost.cs
- TextPenaltyModule.cs
- XmlSchemaGroupRef.cs
- SystemThemeKey.cs
- RequestResizeEvent.cs
- FacetChecker.cs
- EmptyCollection.cs
- QueryLifecycle.cs
- BasicExpressionVisitor.cs
- XmlArrayItemAttributes.cs
- Expression.cs
- DataTablePropertyDescriptor.cs
- RepeatButton.cs
- ResponseStream.cs
- DesignerUtils.cs
- DragCompletedEventArgs.cs
- AsymmetricSignatureDeformatter.cs
- DetailsViewActionList.cs