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
- CredentialCache.cs
- Parameter.cs
- ControlTemplate.cs
- FacetValues.cs
- ToolStripContainerDesigner.cs
- AdornedElementPlaceholder.cs
- CodeTypeOfExpression.cs
- VectorCollection.cs
- StringComparer.cs
- BaseTemplateParser.cs
- Calendar.cs
- httpapplicationstate.cs
- ExtendedPropertyDescriptor.cs
- AdRotator.cs
- IntegerValidatorAttribute.cs
- DesignerVerbCollection.cs
- TextTreeNode.cs
- basenumberconverter.cs
- SourceElementsCollection.cs
- SqlProcedureAttribute.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- StatusBarAutomationPeer.cs
- TreeNodeCollection.cs
- securitymgrsite.cs
- ContainerParagraph.cs
- IntranetCredentialPolicy.cs
- QueuePropertyVariants.cs
- PixelFormats.cs
- _FtpControlStream.cs
- RoutedEventConverter.cs
- Variant.cs
- WebServiceParameterData.cs
- CodeIterationStatement.cs
- XsltContext.cs
- Cursors.cs
- JavascriptCallbackMessageInspector.cs
- CodeObjectCreateExpression.cs
- PropagationProtocolsTracing.cs
- ScrollableControl.cs
- StrongName.cs
- RegexFCD.cs
- ICspAsymmetricAlgorithm.cs
- TableCell.cs
- HttpServerUtilityWrapper.cs
- TagMapInfo.cs
- RetrieveVirtualItemEventArgs.cs
- KeyboardEventArgs.cs
- HttpValueCollection.cs
- XamlContextStack.cs
- PackWebResponse.cs
- ClientConfigurationHost.cs
- DataGridViewRowPostPaintEventArgs.cs
- DataKeyCollection.cs
- BamlRecordHelper.cs
- AnnouncementEndpointElement.cs
- DataGridViewCellEventArgs.cs
- RulePatternOps.cs
- ScrollItemPattern.cs
- PrimitiveSchema.cs
- ThemeDirectoryCompiler.cs
- StringDictionaryWithComparer.cs
- CapabilitiesRule.cs
- ToRequest.cs
- Queue.cs
- CodeDesigner.cs
- EncoderBestFitFallback.cs
- NonBatchDirectoryCompiler.cs
- SourceInterpreter.cs
- DllNotFoundException.cs
- WpfKnownType.cs
- IdentifierService.cs
- ResourceDisplayNameAttribute.cs
- GridViewPageEventArgs.cs
- AttributedMetaModel.cs
- WebPartConnectionsConnectVerb.cs
- ObjectDesignerDataSourceView.cs
- StdRegProviderWrapper.cs
- ElapsedEventArgs.cs
- BitmapData.cs
- Automation.cs
- BuildProviderCollection.cs
- ClientSettingsStore.cs
- InputEventArgs.cs
- XmlTextEncoder.cs
- Codec.cs
- ToolboxItem.cs
- EventToken.cs
- CodeAttributeArgument.cs
- StateMachineSubscription.cs
- DataGridViewImageCell.cs
- DLinqAssociationProvider.cs
- __TransparentProxy.cs
- PermissionSet.cs
- ConfigXmlComment.cs
- HtmlAnchor.cs
- StackBuilderSink.cs
- UriWriter.cs
- WindowsScrollBarBits.cs
- ColumnMapCopier.cs
- _TLSstream.cs