Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / common / managed / HGlobalSafeHandle.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ZoomPercentageConverter.cs
- XmlAttributes.cs
- basecomparevalidator.cs
- SystemKeyConverter.cs
- EventDescriptorCollection.cs
- XPathQilFactory.cs
- Char.cs
- BindableTemplateBuilder.cs
- EncoderParameter.cs
- WebPartEventArgs.cs
- Int32AnimationBase.cs
- InheritablePropertyChangeInfo.cs
- Currency.cs
- Matrix3D.cs
- DaylightTime.cs
- Int32KeyFrameCollection.cs
- EntityConnectionStringBuilder.cs
- DeferredRunTextReference.cs
- StrongName.cs
- PeerNearMe.cs
- Paragraph.cs
- SelectionUIHandler.cs
- XamlRtfConverter.cs
- JsonFaultDetail.cs
- ObjectRef.cs
- RequestSecurityTokenForGetBrowserToken.cs
- GACIdentityPermission.cs
- PropertyMapper.cs
- xml.cs
- PatternMatcher.cs
- smtppermission.cs
- _NetRes.cs
- SqlConnectionFactory.cs
- PriorityBindingExpression.cs
- RightNameExpirationInfoPair.cs
- SpotLight.cs
- SourceFilter.cs
- XPathDocumentBuilder.cs
- COM2Properties.cs
- OutputCacheSettings.cs
- ComplusEndpointConfigContainer.cs
- Propagator.cs
- DescriptionAttribute.cs
- AssemblyBuilderData.cs
- SystemInfo.cs
- FileLevelControlBuilderAttribute.cs
- ShellProvider.cs
- ProcessMessagesAsyncResult.cs
- ViewManager.cs
- Assert.cs
- QuaternionValueSerializer.cs
- OleDbInfoMessageEvent.cs
- ApplicationBuildProvider.cs
- ConfigurationPropertyCollection.cs
- SymmetricSecurityBindingElement.cs
- SQLDateTimeStorage.cs
- ValueTypeFixupInfo.cs
- MemberPath.cs
- XmlEntityReference.cs
- WsdlParser.cs
- TextBoxLine.cs
- ToolStripControlHost.cs
- PrintingPermission.cs
- ExpressionConverter.cs
- MethodMessage.cs
- CommentGlyph.cs
- DelegatedStream.cs
- Maps.cs
- BamlRecordWriter.cs
- InstallerTypeAttribute.cs
- StringValidator.cs
- OleDbConnection.cs
- HTTPRemotingHandler.cs
- X509Certificate2.cs
- WbmpConverter.cs
- ClientEventManager.cs
- GlyphInfoList.cs
- ToolStripProgressBar.cs
- TemplatePropertyEntry.cs
- HeaderedContentControl.cs
- ServicesUtilities.cs
- Quaternion.cs
- DocumentEventArgs.cs
- PerspectiveCamera.cs
- basemetadatamappingvisitor.cs
- TypeDescriptor.cs
- ClientType.cs
- Native.cs
- ScaleTransform.cs
- Empty.cs
- BStrWrapper.cs
- ExternalFile.cs
- DrawItemEvent.cs
- TextInfo.cs
- HitTestWithGeometryDrawingContextWalker.cs
- HttpListenerContext.cs
- SerTrace.cs
- _NegoState.cs
- PlatformCulture.cs
- ComAdminWrapper.cs