Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / Internal / HGlobalSafeHandle.cs / 1 / HGlobalSafeHandle.cs
//---------------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // // Description: // Stream Helper. // Allocates a global memory buffer to do marshaling between a // binary and a structured data. The global memory size increases and // never shrinks. // using System; using System.Runtime.InteropServices; namespace System.Speech.Internal { ////// Encapsulate SafeHandle for Win32 Memory Handles /// internal sealed class HGlobalSafeHandle : SafeHandle { //******************************************************************* // // Constructors // //******************************************************************* #region Constructors internal HGlobalSafeHandle () : base (IntPtr.Zero, true) { } // This destructor will run only if the Dispose method // does not get called. ~HGlobalSafeHandle () { Dispose (false); } protected override void Dispose (bool disposing) { ReleaseHandle (); base.Dispose (disposing); GC.SuppressFinalize (this); } #endregion //******************************************************************** // // Internal Methods // //******************************************************************* #region internal Methods ////// /// /// ///internal IntPtr Buffer (int size) { if (size > _bufferSize) { if (_bufferSize == 0) { SetHandle (Marshal.AllocHGlobal (size)); } else { SetHandle (Marshal.ReAllocHGlobal (handle, (IntPtr) size)); } GC.AddMemoryPressure (size - _bufferSize); _bufferSize = size; } return handle; } /// /// True if the no memory is allocated /// ///public override bool IsInvalid { get { return handle == IntPtr.Zero; } } #endregion //******************************************************************** // // Protected Methods // //******************************************************************** #region Protected Methods /// /// Releases the Win32 Memory handle /// ///protected override bool ReleaseHandle () { if (handle != IntPtr.Zero) { // Reset the extra information given to the GC if (_bufferSize > 0) { GC.RemoveMemoryPressure (_bufferSize); _bufferSize = 0; } Marshal.FreeHGlobal (handle); handle = IntPtr.Zero; return true; } return false; } #endregion //******************************************************************* // // Private Fields // //******************************************************************** #region Private Fields private int _bufferSize; #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // // Description: // Stream Helper. // Allocates a global memory buffer to do marshaling between a // binary and a structured data. The global memory size increases and // never shrinks. // using System; using System.Runtime.InteropServices; namespace System.Speech.Internal { ////// Encapsulate SafeHandle for Win32 Memory Handles /// internal sealed class HGlobalSafeHandle : SafeHandle { //******************************************************************* // // Constructors // //******************************************************************* #region Constructors internal HGlobalSafeHandle () : base (IntPtr.Zero, true) { } // This destructor will run only if the Dispose method // does not get called. ~HGlobalSafeHandle () { Dispose (false); } protected override void Dispose (bool disposing) { ReleaseHandle (); base.Dispose (disposing); GC.SuppressFinalize (this); } #endregion //******************************************************************** // // Internal Methods // //******************************************************************* #region internal Methods ////// /// /// ///internal IntPtr Buffer (int size) { if (size > _bufferSize) { if (_bufferSize == 0) { SetHandle (Marshal.AllocHGlobal (size)); } else { SetHandle (Marshal.ReAllocHGlobal (handle, (IntPtr) size)); } GC.AddMemoryPressure (size - _bufferSize); _bufferSize = size; } return handle; } /// /// True if the no memory is allocated /// ///public override bool IsInvalid { get { return handle == IntPtr.Zero; } } #endregion //******************************************************************** // // Protected Methods // //******************************************************************** #region Protected Methods /// /// Releases the Win32 Memory handle /// ///protected override bool ReleaseHandle () { if (handle != IntPtr.Zero) { // Reset the extra information given to the GC if (_bufferSize > 0) { GC.RemoveMemoryPressure (_bufferSize); _bufferSize = 0; } Marshal.FreeHGlobal (handle); handle = IntPtr.Zero; return true; } return false; } #endregion //******************************************************************* // // Private Fields // //******************************************************************** #region Private Fields private int _bufferSize; #endregion } } // 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
- MenuAutomationPeer.cs
- DataListComponentEditor.cs
- _CacheStreams.cs
- TextBoxBase.cs
- DataObjectCopyingEventArgs.cs
- CheckedListBox.cs
- CharEntityEncoderFallback.cs
- TextEditorTyping.cs
- CodeDOMUtility.cs
- RadioButtonAutomationPeer.cs
- IChannel.cs
- X509Utils.cs
- SiteMapNodeCollection.cs
- userdatakeys.cs
- DispatcherExceptionFilterEventArgs.cs
- XmlElementCollection.cs
- XPathDescendantIterator.cs
- TagMapCollection.cs
- ApplicationDirectory.cs
- DataGridRowHeaderAutomationPeer.cs
- TreeNode.cs
- Int64Converter.cs
- DataGridViewCellCancelEventArgs.cs
- _ProxyChain.cs
- TypeSystem.cs
- FormattedTextSymbols.cs
- ClosableStream.cs
- BufferAllocator.cs
- BufferedGraphicsManager.cs
- OperationSelectorBehavior.cs
- CapabilitiesPattern.cs
- MenuScrollingVisibilityConverter.cs
- IMembershipProvider.cs
- DaylightTime.cs
- Int16Converter.cs
- httpserverutility.cs
- URLIdentityPermission.cs
- ReferentialConstraintRoleElement.cs
- CodeSubDirectoriesCollection.cs
- LayoutUtils.cs
- NumberSubstitution.cs
- Animatable.cs
- ByteStack.cs
- XmlQueryRuntime.cs
- OutputCacheSection.cs
- RichTextBox.cs
- HitTestWithGeometryDrawingContextWalker.cs
- ProfileSettings.cs
- EventProviderBase.cs
- CssTextWriter.cs
- SkinIDTypeConverter.cs
- SpecialFolderEnumConverter.cs
- Page.cs
- DataGridViewControlCollection.cs
- WebPartDisplayModeCancelEventArgs.cs
- PointCollection.cs
- Rijndael.cs
- CompiledXpathExpr.cs
- Handle.cs
- ProfileModule.cs
- Accessible.cs
- FormViewModeEventArgs.cs
- SynchronizationLockException.cs
- DataMemberFieldConverter.cs
- DataBinder.cs
- AttributeData.cs
- HandledMouseEvent.cs
- HttpConfigurationSystem.cs
- DataServiceHostFactory.cs
- DetailsViewUpdatedEventArgs.cs
- MenuStrip.cs
- UniqueID.cs
- Expander.cs
- CodeTypeReferenceExpression.cs
- X509LogoTypeExtension.cs
- CultureInfoConverter.cs
- GreenMethods.cs
- _HeaderInfoTable.cs
- ErasingStroke.cs
- EntityParameterCollection.cs
- HostVisual.cs
- TextModifier.cs
- TableHeaderCell.cs
- ErrorFormatterPage.cs
- ExternalException.cs
- COM2AboutBoxPropertyDescriptor.cs
- AsyncOperation.cs
- HtmlTitle.cs
- StaticContext.cs
- WrappedReader.cs
- XmlnsDictionary.cs
- DoubleLinkListEnumerator.cs
- DataServiceQueryException.cs
- PromptBuilder.cs
- indexingfiltermarshaler.cs
- BamlTreeMap.cs
- ZoomingMessageFilter.cs
- CompressionTransform.cs
- DoubleLinkList.cs
- SafeNativeMemoryHandle.cs