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
- Line.cs
- XmlSiteMapProvider.cs
- SharedTcpTransportManager.cs
- AdapterUtil.cs
- Base64Encoder.cs
- SymbolEqualComparer.cs
- Win32SafeHandles.cs
- ping.cs
- Attributes.cs
- IntMinMaxAggregationOperator.cs
- IPEndPoint.cs
- NestPullup.cs
- FlowLayoutSettings.cs
- MessageQueueException.cs
- FileStream.cs
- LogEntryHeaderDeserializer.cs
- KeyInstance.cs
- autovalidator.cs
- Int64AnimationUsingKeyFrames.cs
- RequestCacheManager.cs
- DrawingCollection.cs
- SqlDataSourceFilteringEventArgs.cs
- ZipPackagePart.cs
- SmiEventSink_Default.cs
- ConnectionProviderAttribute.cs
- Freezable.cs
- TextSpanModifier.cs
- InheritedPropertyChangedEventArgs.cs
- HttpProcessUtility.cs
- InfoCardCryptoHelper.cs
- X509ChainElement.cs
- RIPEMD160.cs
- MenuItem.cs
- ScrollEvent.cs
- FixedBufferAttribute.cs
- NetworkStream.cs
- SourceChangedEventArgs.cs
- Pts.cs
- ComboBoxRenderer.cs
- SqlDependency.cs
- LoadItemsEventArgs.cs
- EntityModelBuildProvider.cs
- OperatingSystem.cs
- SpeechUI.cs
- AdornedElementPlaceholder.cs
- PeerNameResolver.cs
- MouseButtonEventArgs.cs
- FileNotFoundException.cs
- SharedStatics.cs
- OledbConnectionStringbuilder.cs
- RtfControlWordInfo.cs
- KeySplineConverter.cs
- SignerInfo.cs
- CellRelation.cs
- TextEditor.cs
- XslAstAnalyzer.cs
- QueryAsyncResult.cs
- ElementHostAutomationPeer.cs
- OleDbReferenceCollection.cs
- MdImport.cs
- MailMessageEventArgs.cs
- DbMetaDataColumnNames.cs
- DateTimeConstantAttribute.cs
- AnimationException.cs
- InputLanguageSource.cs
- PrincipalPermissionMode.cs
- Rfc2898DeriveBytes.cs
- ConnectionInterfaceCollection.cs
- CharacterHit.cs
- ArrangedElementCollection.cs
- StatusBarItemAutomationPeer.cs
- ItemChangedEventArgs.cs
- Size3D.cs
- AuthorizationRule.cs
- AmbientLight.cs
- TextElementEnumerator.cs
- LocatorBase.cs
- LocalizedNameDescriptionPair.cs
- DesignerActionPropertyItem.cs
- DefaultWorkflowLoaderService.cs
- HostingEnvironmentSection.cs
- DesignerCapabilities.cs
- XmlSchemaDocumentation.cs
- CodeDirectoryCompiler.cs
- SerializerDescriptor.cs
- mediapermission.cs
- DocumentScope.cs
- TreeNodeClickEventArgs.cs
- RelatedPropertyManager.cs
- WindowsTab.cs
- ConfigurationValidatorBase.cs
- VariableQuery.cs
- SqlXml.cs
- DeviceFilterEditorDialog.cs
- WindowsRebar.cs
- ServiceConfigurationTraceRecord.cs
- SmtpAuthenticationManager.cs
- ClientOperationFormatterProvider.cs
- GridToolTip.cs
- WindowProviderWrapper.cs