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
- DetectEofStream.cs
- ResourceKey.cs
- PlacementWorkspace.cs
- User.cs
- AssemblySettingAttributes.cs
- FileNotFoundException.cs
- ArithmeticException.cs
- GridItemPatternIdentifiers.cs
- FacetEnabledSchemaElement.cs
- SizeAnimation.cs
- ExpressionPrefixAttribute.cs
- DBDataPermission.cs
- XpsPartBase.cs
- DispatcherHookEventArgs.cs
- RelatedCurrencyManager.cs
- SpecularMaterial.cs
- SingleAnimationUsingKeyFrames.cs
- SmtpDigestAuthenticationModule.cs
- TouchFrameEventArgs.cs
- ToolStripMenuItem.cs
- RequestBringIntoViewEventArgs.cs
- ExpandableObjectConverter.cs
- PageMediaSize.cs
- PlanCompilerUtil.cs
- FixedSOMLineCollection.cs
- DrawingAttributesDefaultValueFactory.cs
- SchemaTableColumn.cs
- BooleanConverter.cs
- FormViewPagerRow.cs
- HttpHandlerAction.cs
- Point3DCollection.cs
- Transaction.cs
- ManagedIStream.cs
- DropShadowEffect.cs
- CopyNodeSetAction.cs
- ELinqQueryState.cs
- HttpPostLocalhostServerProtocol.cs
- SafeCryptHandles.cs
- StringValidatorAttribute.cs
- Variant.cs
- BreakRecordTable.cs
- DataGridViewUtilities.cs
- ConstructorNeedsTagAttribute.cs
- Int32Converter.cs
- BatchParser.cs
- UIElement.cs
- EventRecordWrittenEventArgs.cs
- XPathScanner.cs
- WebBrowserProgressChangedEventHandler.cs
- OptimalBreakSession.cs
- DaylightTime.cs
- TraversalRequest.cs
- TemplateNameScope.cs
- DependencyPropertyValueSerializer.cs
- RequestCacheManager.cs
- ApplyTemplatesAction.cs
- WebPartCatalogCloseVerb.cs
- WebServiceData.cs
- TypeListConverter.cs
- HttpContextBase.cs
- TextRangeProviderWrapper.cs
- VariableAction.cs
- ISAPIWorkerRequest.cs
- TracingConnection.cs
- MailBnfHelper.cs
- SessionIDManager.cs
- SamlAttribute.cs
- _DisconnectOverlappedAsyncResult.cs
- MappingModelBuildProvider.cs
- Rijndael.cs
- HMACSHA512.cs
- PassportAuthenticationModule.cs
- StandardOleMarshalObject.cs
- TableRow.cs
- TextOnlyOutput.cs
- TextProviderWrapper.cs
- DirectionalLight.cs
- NumericUpDownAcceleration.cs
- TextTrailingWordEllipsis.cs
- WebPartDescriptionCollection.cs
- CompleteWizardStep.cs
- _ContextAwareResult.cs
- SelectionRangeConverter.cs
- SafeThemeHandle.cs
- WebPartChrome.cs
- Point3DAnimation.cs
- TextContainerChangedEventArgs.cs
- TextCompositionManager.cs
- SiblingIterators.cs
- InputReport.cs
- ProviderCommandInfoUtils.cs
- XmlComment.cs
- ObjectParameterCollection.cs
- Misc.cs
- DrawItemEvent.cs
- RedBlackList.cs
- MenuRendererClassic.cs
- CryptoConfig.cs
- AmbientLight.cs
- RenderDataDrawingContext.cs