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
- TableLayoutPanelCellPosition.cs
- ResXResourceSet.cs
- HandleCollector.cs
- EntityDataSourceQueryBuilder.cs
- ImageFormatConverter.cs
- JoinSymbol.cs
- MailAddressCollection.cs
- FixedDocumentPaginator.cs
- Set.cs
- HandleValueEditor.cs
- XmlSchemaAttribute.cs
- StringDictionaryCodeDomSerializer.cs
- AQNBuilder.cs
- Rect.cs
- PingReply.cs
- WsatServiceAddress.cs
- QueryGenerator.cs
- ErrorWrapper.cs
- StringPropertyBuilder.cs
- DateTimeOffsetStorage.cs
- X509CertificateCollection.cs
- SQLBinaryStorage.cs
- NonceToken.cs
- SQLDecimal.cs
- XmlConvert.cs
- EmptyStringExpandableObjectConverter.cs
- GridItemCollection.cs
- DefinitionUpdate.cs
- HandlerWithFactory.cs
- TdsValueSetter.cs
- SchemaEntity.cs
- DurableInstanceManager.cs
- InitializingNewItemEventArgs.cs
- FontStyleConverter.cs
- ProgressiveCrcCalculatingStream.cs
- TypefaceMetricsCache.cs
- OrthographicCamera.cs
- VectorConverter.cs
- GraphicsContainer.cs
- TemplatingOptionsDialog.cs
- RangeValueProviderWrapper.cs
- Parser.cs
- DataTableExtensions.cs
- CardSpaceSelector.cs
- SystemIPGlobalStatistics.cs
- PeerNameRecordCollection.cs
- HtmlEncodedRawTextWriter.cs
- CopyOfAction.cs
- XsltConvert.cs
- PageCache.cs
- WebPartHeaderCloseVerb.cs
- BitStream.cs
- IdnMapping.cs
- SkinBuilder.cs
- PrinterResolution.cs
- HandoffBehavior.cs
- ViewValidator.cs
- NativeMethods.cs
- PrintSystemException.cs
- SiteMapNode.cs
- SpellerInterop.cs
- EntityDataSourceReferenceGroup.cs
- SchemaEntity.cs
- GridViewColumnCollection.cs
- DesignerActionService.cs
- ScriptBehaviorDescriptor.cs
- WebExceptionStatus.cs
- FixedPosition.cs
- RsaSecurityTokenAuthenticator.cs
- datacache.cs
- MSAAEventDispatcher.cs
- AuthenticationService.cs
- WebServicesDescriptionAttribute.cs
- QueryOptionExpression.cs
- ToolStripInSituService.cs
- TextSpan.cs
- RelativeSource.cs
- FaultContractInfo.cs
- UIElementParaClient.cs
- AnnotationStore.cs
- ListViewTableRow.cs
- UriExt.cs
- RemotingSurrogateSelector.cs
- Utility.cs
- ProgressChangedEventArgs.cs
- ErrorLog.cs
- ServerValidateEventArgs.cs
- PngBitmapDecoder.cs
- DelayedRegex.cs
- Vector3DConverter.cs
- SafeNativeMethodsCLR.cs
- Canvas.cs
- ColorMatrix.cs
- DataGridViewDataErrorEventArgs.cs
- XmlILModule.cs
- RelationshipWrapper.cs
- WebSysDescriptionAttribute.cs
- Vector3DValueSerializer.cs
- ProcessModule.cs
- UncommonField.cs