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
- SynchronizedDisposablePool.cs
- CompilerCollection.cs
- RegexBoyerMoore.cs
- XmlCharType.cs
- Rect.cs
- BindingWorker.cs
- Stacktrace.cs
- StringStorage.cs
- BitmapEffectGeneralTransform.cs
- SafePipeHandle.cs
- SimpleNameService.cs
- SafeNativeMethodsOther.cs
- PngBitmapEncoder.cs
- FileDetails.cs
- EntityDataSourceMemberPath.cs
- XmlAttributeAttribute.cs
- RbTree.cs
- ThreadSafeMessageFilterTable.cs
- HandlerWithFactory.cs
- BufferedWebEventProvider.cs
- SortedList.cs
- StringWriter.cs
- ServiceModelConfigurationSectionCollection.cs
- InlineCollection.cs
- MemberDomainMap.cs
- PrintDialog.cs
- PeerToPeerException.cs
- SdlChannelSink.cs
- FontSource.cs
- SeverityFilter.cs
- TreeNode.cs
- Pen.cs
- OdbcParameterCollection.cs
- LinkedResource.cs
- ButtonAutomationPeer.cs
- MailAddress.cs
- MaskedTextBoxDesigner.cs
- CodeDirectoryCompiler.cs
- FileSystemWatcher.cs
- FullTrustAssembliesSection.cs
- FeatureSupport.cs
- SystemIPInterfaceStatistics.cs
- MembershipAdapter.cs
- BufferAllocator.cs
- XslCompiledTransform.cs
- CustomPeerResolverService.cs
- UrlPath.cs
- PublisherMembershipCondition.cs
- PhoneCall.cs
- InputMethodStateChangeEventArgs.cs
- SamlSerializer.cs
- ItemsPanelTemplate.cs
- FontFamilyConverter.cs
- HwndSourceParameters.cs
- TimeSpanOrInfiniteValidator.cs
- Visitor.cs
- CheckBoxFlatAdapter.cs
- SafeArchiveContext.cs
- AuthorizationSection.cs
- COM2Properties.cs
- MsmqIntegrationChannelFactory.cs
- DataGridRow.cs
- PointF.cs
- DataRecordInternal.cs
- ResourceDisplayNameAttribute.cs
- PeerInputChannel.cs
- CellTreeNode.cs
- CleanUpVirtualizedItemEventArgs.cs
- KnownTypesHelper.cs
- sitestring.cs
- WindowsFormsHostAutomationPeer.cs
- PerformanceCounterPermissionAttribute.cs
- ResourceSet.cs
- Annotation.cs
- GenericIdentity.cs
- COM2Properties.cs
- Oid.cs
- EditableLabelControl.cs
- MetafileHeader.cs
- AddInStore.cs
- SemanticAnalyzer.cs
- ResourceDisplayNameAttribute.cs
- PrefixQName.cs
- PersonalizationStateInfo.cs
- GeneralTransform3D.cs
- FileSystemEnumerable.cs
- JsonEncodingStreamWrapper.cs
- StructuredType.cs
- ComponentResourceManager.cs
- EdmSchemaError.cs
- SmtpNtlmAuthenticationModule.cs
- SetStoryboardSpeedRatio.cs
- AppSettingsReader.cs
- FontStretch.cs
- OletxEnlistment.cs
- NamedObjectList.cs
- ElementsClipboardData.cs
- ParserStack.cs
- DataGridViewSelectedColumnCollection.cs
- SharedPerformanceCounter.cs