Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / infocard / common / managed / HGlobalSafeHandle.cs / 1305376 / HGlobalSafeHandle.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.Runtime.InteropServices; using Microsoft.InfoCards.Diagnostics; using System.Runtime.CompilerServices; using System.Runtime.ConstrainedExecution; using System.Security; using IDT=Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary: // Provides a wrapper over HGlobal alloc'd memory guaranteeing that the // contents will be released in the presence of rude app domain and thread aborts. // internal class HGlobalSafeHandle : SafeHandle { public static HGlobalSafeHandle Construct() { return new HGlobalSafeHandle(); } public static HGlobalSafeHandle Construct( string managedString ) { IDT.DebugAssert( !String.IsNullOrEmpty( managedString) , "null string" ); int bytes = (managedString.Length + 1) * 2; return new HGlobalSafeHandle( Marshal.StringToHGlobalUni( managedString ), bytes ); } public static HGlobalSafeHandle Construct( int bytes ) { IDT.DebugAssert( bytes > 0, "attempt to allocate a handle with <= 0 bytes" ); return new HGlobalSafeHandle( Marshal.AllocHGlobal( bytes ), bytes ); } [SuppressUnmanagedCodeSecurity] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [DllImport("Kernel32.dll", EntryPoint="RtlZeroMemory", SetLastError=false)] public static extern void ZeroMemory( IntPtr dest, Int32 size ); // // The number of bytes allocated. // private int m_bytes; [ReliabilityContract( Consistency.WillNotCorruptState, Cer.Success ) ] private HGlobalSafeHandle( IntPtr toManage, int length ) : base( IntPtr.Zero, true ) { m_bytes = length; SetHandle( toManage ); } private HGlobalSafeHandle() : base( IntPtr.Zero, true ) {} public override bool IsInvalid { get { return ( IntPtr.Zero == base.handle ); } } // // Summary: // Zero the string contents and release the handle // protected override bool ReleaseHandle() { IDT.DebugAssert( !IsInvalid, "handle is invalid in release handle" ); IDT.DebugAssert( 0 != m_bytes, "invalid size" ); ZeroMemory( base.handle, m_bytes ); Marshal.FreeHGlobal( base.handle ); 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
- HyperLinkStyle.cs
- DrawingVisual.cs
- GridViewHeaderRowPresenter.cs
- ComEventsInfo.cs
- SQLDoubleStorage.cs
- ValueType.cs
- IdleTimeoutMonitor.cs
- ReliabilityContractAttribute.cs
- OrderedDictionary.cs
- PerformanceCounter.cs
- Grant.cs
- XsdBuilder.cs
- HtmlInputButton.cs
- XmlSchemaProviderAttribute.cs
- MethodAccessException.cs
- ToolStripContextMenu.cs
- DependencyObjectType.cs
- DataGridViewCellCancelEventArgs.cs
- MetadataElement.cs
- MobileUserControlDesigner.cs
- UnsafePeerToPeerMethods.cs
- UiaCoreTypesApi.cs
- IdentityManager.cs
- TimeZone.cs
- PolyBezierSegment.cs
- Label.cs
- MatrixIndependentAnimationStorage.cs
- SchemaSetCompiler.cs
- DiscoveryInnerClientManaged11.cs
- ReadOnlyDataSource.cs
- HttpApplicationFactory.cs
- PrintSchema.cs
- SystemGatewayIPAddressInformation.cs
- WebPartMovingEventArgs.cs
- MarkupWriter.cs
- SourceFilter.cs
- LayoutTableCell.cs
- sqlcontext.cs
- PaginationProgressEventArgs.cs
- UtilityExtension.cs
- AssemblySettingAttributes.cs
- InvalidDataException.cs
- UndoEngine.cs
- Rotation3D.cs
- Point3DConverter.cs
- StateItem.cs
- ManagementScope.cs
- XmlMessageFormatter.cs
- DrawingCollection.cs
- QuadraticBezierSegment.cs
- RegistryConfigurationProvider.cs
- TextTabProperties.cs
- Vertex.cs
- BaseDataListComponentEditor.cs
- DataGridRelationshipRow.cs
- XmlWriterSettings.cs
- WebPartConnectionsCloseVerb.cs
- Bits.cs
- SourceFilter.cs
- DataRowExtensions.cs
- CachedFontFamily.cs
- CallSiteHelpers.cs
- ReferenceList.cs
- DataGridViewRowHeaderCell.cs
- HttpConfigurationSystem.cs
- TypedReference.cs
- StylusDevice.cs
- WrappedIUnknown.cs
- PropertySet.cs
- HtmlWindow.cs
- SQLByteStorage.cs
- PropertySourceInfo.cs
- ResponseStream.cs
- CanonicalizationDriver.cs
- HwndSource.cs
- WebEncodingValidatorAttribute.cs
- WebPartConnectionsCloseVerb.cs
- ModelFactory.cs
- AssertValidation.cs
- InstanceDataCollection.cs
- MenuEventArgs.cs
- XmlExpressionDumper.cs
- UnsafeNativeMethodsCLR.cs
- XmlnsCache.cs
- OleDbWrapper.cs
- SimpleBitVector32.cs
- SQLInt16Storage.cs
- TextRangeAdaptor.cs
- XmlValidatingReader.cs
- ClientSponsor.cs
- EmbeddedMailObjectCollectionEditor.cs
- OrthographicCamera.cs
- List.cs
- ListCollectionView.cs
- TableColumn.cs
- FrameworkElementFactoryMarkupObject.cs
- CaseCqlBlock.cs
- designeractionbehavior.cs
- ColumnResult.cs
- ProtocolViolationException.cs