Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / 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
- SoapClientProtocol.cs
- Ops.cs
- InkCanvasFeedbackAdorner.cs
- HwndHost.cs
- ReadOnlyCollectionBase.cs
- UnmanagedMarshal.cs
- SurrogateSelector.cs
- ValidationError.cs
- StringBlob.cs
- DataGridCellsPresenter.cs
- DropSource.cs
- CodeAttachEventStatement.cs
- LinqDataSourceValidationException.cs
- ArgumentException.cs
- Delay.cs
- BitmapImage.cs
- ImageClickEventArgs.cs
- ToolbarAUtomationPeer.cs
- JournalEntryStack.cs
- StringCollection.cs
- AttributeProviderAttribute.cs
- KnownAssembliesSet.cs
- DataGridCellsPanel.cs
- InheritanceContextHelper.cs
- DbBuffer.cs
- RuntimeEnvironment.cs
- FontStyleConverter.cs
- XmlTypeAttribute.cs
- HttpPostedFile.cs
- ToolStripButton.cs
- DataGridDesigner.cs
- TransformGroup.cs
- ISO2022Encoding.cs
- JapaneseLunisolarCalendar.cs
- CodeExpressionCollection.cs
- CodeEventReferenceExpression.cs
- ArgumentsParser.cs
- XmlQuerySequence.cs
- DataObject.cs
- ToolStripItemCollection.cs
- InstanceDescriptor.cs
- ActivityDelegate.cs
- PlaceHolder.cs
- UnicodeEncoding.cs
- ResourcePermissionBaseEntry.cs
- ServerType.cs
- WindowsAuthenticationModule.cs
- FileEnumerator.cs
- DataGridViewButtonCell.cs
- shaperfactory.cs
- RankException.cs
- FamilyTypefaceCollection.cs
- PassportAuthenticationEventArgs.cs
- Win32MouseDevice.cs
- NumericExpr.cs
- EndpointDispatcherTable.cs
- ForeignKeyConstraint.cs
- WebPartAddingEventArgs.cs
- GenericUI.cs
- ProcessModelSection.cs
- AnimationStorage.cs
- mediaeventargs.cs
- BindingValueChangedEventArgs.cs
- TextStore.cs
- ComponentConverter.cs
- SectionInformation.cs
- TypedElement.cs
- SqlMethodAttribute.cs
- filewebresponse.cs
- OlePropertyStructs.cs
- util.cs
- KeyValueConfigurationCollection.cs
- _UriSyntax.cs
- DeferredSelectedIndexReference.cs
- ItemType.cs
- NativeCppClassAttribute.cs
- Stylus.cs
- XmlSchemaComplexContent.cs
- RuntimeResourceSet.cs
- ToolboxSnapDragDropEventArgs.cs
- Pens.cs
- InputGestureCollection.cs
- SqlExpander.cs
- SchemaTableOptionalColumn.cs
- ToolStripSeparatorRenderEventArgs.cs
- DateRangeEvent.cs
- HtmlProps.cs
- _FtpControlStream.cs
- EntityCommandCompilationException.cs
- CommandField.cs
- XmlAnyElementAttributes.cs
- AnchoredBlock.cs
- InvokeGenerator.cs
- EntityDataSourceWrapper.cs
- MessageBox.cs
- BadImageFormatException.cs
- Point3DCollection.cs
- DataGridViewAutoSizeModeEventArgs.cs
- IconHelper.cs
- CompositeDataBoundControl.cs