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
- DesignerTextViewAdapter.cs
- PropertyValidationContext.cs
- DocumentViewer.cs
- XmlSchemaImporter.cs
- X509ChainPolicy.cs
- HttpModule.cs
- CodeGeneratorOptions.cs
- XmlSchemaSequence.cs
- HttpWrapper.cs
- ManagementQuery.cs
- DesignTimeParseData.cs
- CryptographicAttribute.cs
- SchemaNames.cs
- CodeParameterDeclarationExpression.cs
- TraversalRequest.cs
- cryptoapiTransform.cs
- ToolboxItemAttribute.cs
- Nodes.cs
- AmbiguousMatchException.cs
- TextReader.cs
- CodeCompileUnit.cs
- SchemaCollectionCompiler.cs
- BaseAppDomainProtocolHandler.cs
- PnrpPermission.cs
- MethodSet.cs
- SystemIPAddressInformation.cs
- Pipe.cs
- FontResourceCache.cs
- Int16.cs
- Scheduler.cs
- DataList.cs
- InkSerializer.cs
- FieldDescriptor.cs
- ServiceNameCollection.cs
- ImageSourceConverter.cs
- DynamicILGenerator.cs
- WeakReferenceEnumerator.cs
- OleDbCommand.cs
- HiddenField.cs
- RepeatButtonAutomationPeer.cs
- WSMessageEncoding.cs
- RequestCachePolicy.cs
- WindowsAltTab.cs
- ObjectSet.cs
- ImageInfo.cs
- ActivityExecutor.cs
- ListBoxItemAutomationPeer.cs
- BamlResourceSerializer.cs
- CriticalHandle.cs
- ScaleTransform.cs
- ReachDocumentReferenceCollectionSerializerAsync.cs
- PagesSection.cs
- WebZoneDesigner.cs
- Selection.cs
- StringPropertyBuilder.cs
- WebBrowserProgressChangedEventHandler.cs
- SamlAction.cs
- Font.cs
- TrackBarRenderer.cs
- ToolStripDropTargetManager.cs
- HandlerWithFactory.cs
- Decimal.cs
- Section.cs
- DataGridColumn.cs
- OptimisticConcurrencyException.cs
- Control.cs
- DeriveBytes.cs
- DetailsViewRowCollection.cs
- TrackingCondition.cs
- DebugManager.cs
- URLMembershipCondition.cs
- AppDomainFactory.cs
- Int32CollectionValueSerializer.cs
- RectIndependentAnimationStorage.cs
- IIS7UserPrincipal.cs
- DbgUtil.cs
- BaseCAMarshaler.cs
- ServiceOperationParameter.cs
- XmlNotation.cs
- CommandBindingCollection.cs
- HandledEventArgs.cs
- DesignerEventService.cs
- XPathNodePointer.cs
- HideDisabledControlAdapter.cs
- Keywords.cs
- HttpListenerException.cs
- NullableBoolConverter.cs
- MaskInputRejectedEventArgs.cs
- HttpListener.cs
- DbConnectionStringCommon.cs
- BitConverter.cs
- FormsAuthenticationCredentials.cs
- ZipIOExtraFieldZip64Element.cs
- IssuedTokensHeader.cs
- WebPartDisplayMode.cs
- WinFormsSecurity.cs
- TableCell.cs
- DbConnectionPoolOptions.cs
- AnimatedTypeHelpers.cs
- selecteditemcollection.cs