Code:
/ DotNET / DotNET / 8.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebHeaderCollection.cs
- CollectionMarkupSerializer.cs
- ThemeConfigurationDialog.cs
- HttpResponse.cs
- ObservableDictionary.cs
- Keywords.cs
- IInstanceTable.cs
- SignalGate.cs
- PartialCachingAttribute.cs
- RouteUrlExpressionBuilder.cs
- SQLBytes.cs
- SQLDouble.cs
- DataView.cs
- HostedHttpTransportManager.cs
- ConstructorBuilder.cs
- UdpRetransmissionSettings.cs
- NativeMethods.cs
- WindowsBrush.cs
- BookmarkScopeManager.cs
- DuplexChannelBinder.cs
- UdpTransportBindingElement.cs
- SqlTypeConverter.cs
- Point3DAnimationUsingKeyFrames.cs
- GetPageNumberCompletedEventArgs.cs
- SqlDataSourceCommandEventArgs.cs
- NativeMethods.cs
- TreeViewAutomationPeer.cs
- TableAutomationPeer.cs
- BuildManagerHost.cs
- MetadataUtil.cs
- DefaultValueAttribute.cs
- OutputScopeManager.cs
- MemoryPressure.cs
- ObjectDesignerDataSourceView.cs
- UnderstoodHeaders.cs
- UIInitializationException.cs
- _AutoWebProxyScriptHelper.cs
- Drawing.cs
- TemplateControlCodeDomTreeGenerator.cs
- DefaultValueAttribute.cs
- NetNamedPipeSecurity.cs
- SchemaElement.cs
- exports.cs
- MissingMemberException.cs
- BCLDebug.cs
- EventPrivateKey.cs
- MappingModelBuildProvider.cs
- ConnectionStringSettingsCollection.cs
- DataGridTextBox.cs
- DigestTraceRecordHelper.cs
- IChannel.cs
- TypeDescriptionProvider.cs
- PropertyGrid.cs
- XmlSchemaInclude.cs
- XamlVector3DCollectionSerializer.cs
- DataGridViewCheckBoxCell.cs
- CryptoStream.cs
- SpanIndex.cs
- NetworkAddressChange.cs
- TracedNativeMethods.cs
- GZipDecoder.cs
- CompilerHelpers.cs
- Int32RectValueSerializer.cs
- SettingsPropertyValueCollection.cs
- WebPartCatalogAddVerb.cs
- Transform.cs
- XpsS0ValidatingLoader.cs
- ClockGroup.cs
- SecurityContextSecurityTokenResolver.cs
- ContentPosition.cs
- MonthChangedEventArgs.cs
- SamlSerializer.cs
- DesignerDataRelationship.cs
- Operand.cs
- BehaviorEditorPart.cs
- EnlistmentState.cs
- TdsParserSessionPool.cs
- Splitter.cs
- _TLSstream.cs
- CultureSpecificStringDictionary.cs
- MbpInfo.cs
- MailAddress.cs
- TableProviderWrapper.cs
- TextEditorLists.cs
- BitmapEffectRenderDataResource.cs
- WebPartMinimizeVerb.cs
- SymbolPair.cs
- ScrollContentPresenter.cs
- DBConcurrencyException.cs
- SqlInfoMessageEvent.cs
- StreamInfo.cs
- DBConcurrencyException.cs
- _DisconnectOverlappedAsyncResult.cs
- ProcessHostMapPath.cs
- MetadataPropertyAttribute.cs
- XmlCustomFormatter.cs
- ResourceDictionaryCollection.cs
- Typeface.cs
- LayoutEngine.cs
- sortedlist.cs