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
- ToggleButton.cs
- XmlTextWriter.cs
- TranslateTransform3D.cs
- KeySplineConverter.cs
- SelectorAutomationPeer.cs
- EnvironmentPermission.cs
- FileVersion.cs
- ToolStripPanelSelectionGlyph.cs
- RayHitTestParameters.cs
- MissingMemberException.cs
- Deserializer.cs
- HttpDictionary.cs
- IsolatedStorage.cs
- SiteMapDataSourceView.cs
- String.cs
- Models.cs
- InlineUIContainer.cs
- ElapsedEventArgs.cs
- ACE.cs
- ReadOnlyAttribute.cs
- SinglePageViewer.cs
- AdCreatedEventArgs.cs
- ZipIOExtraFieldPaddingElement.cs
- SiteMapNodeItemEventArgs.cs
- WebPartConnectionsCloseVerb.cs
- InkSerializer.cs
- UInt16.cs
- CodeAttachEventStatement.cs
- ConstantSlot.cs
- CodeSubDirectoriesCollection.cs
- WebPartEditorOkVerb.cs
- DNS.cs
- CharacterMetricsDictionary.cs
- WebResponse.cs
- MediaPlayer.cs
- ActivityExecutionFilter.cs
- ICspAsymmetricAlgorithm.cs
- EventsTab.cs
- WebBrowserHelper.cs
- SchemaExporter.cs
- OleDbCommandBuilder.cs
- DataBinding.cs
- CommonRemoteMemoryBlock.cs
- ParameterSubsegment.cs
- UniqueEventHelper.cs
- IntellisenseTextBox.designer.cs
- PingReply.cs
- ReadOnlyCollectionBase.cs
- TextEncodedRawTextWriter.cs
- UIElementCollection.cs
- WebDisplayNameAttribute.cs
- ImmutableCollection.cs
- XmlSchemaInclude.cs
- VariableDesigner.xaml.cs
- WeakRefEnumerator.cs
- CryptoHandle.cs
- DataStorage.cs
- RangeContentEnumerator.cs
- BulletedListEventArgs.cs
- MetaChildrenColumn.cs
- TreeNodeBinding.cs
- InfoCardListRequest.cs
- Behavior.cs
- SignedXml.cs
- Attributes.cs
- BamlLocalizableResourceKey.cs
- SqlLiftIndependentRowExpressions.cs
- DefaultValueAttribute.cs
- OleDbConnectionInternal.cs
- LinqDataSourceValidationException.cs
- X509Certificate2Collection.cs
- ExtendedProperty.cs
- DataControlFieldHeaderCell.cs
- FileClassifier.cs
- LassoSelectionBehavior.cs
- FunctionQuery.cs
- APCustomTypeDescriptor.cs
- EmptyControlCollection.cs
- LocationFactory.cs
- Automation.cs
- FixedSOMPageElement.cs
- Property.cs
- VirtualPathUtility.cs
- SQlBooleanStorage.cs
- UrlMapping.cs
- ReadOnlyHierarchicalDataSourceView.cs
- IDQuery.cs
- SQLDecimalStorage.cs
- DateTimeConstantAttribute.cs
- XmlSchemaComplexType.cs
- FastEncoderWindow.cs
- WindowsTooltip.cs
- ChameleonKey.cs
- StylusPoint.cs
- StateDesignerConnector.cs
- BackgroundWorker.cs
- Border.cs
- OledbConnectionStringbuilder.cs
- StateItem.cs
- BufferModesCollection.cs