Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / 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
- Message.cs
- MatchingStyle.cs
- InputLanguage.cs
- CacheSection.cs
- TextUtf8RawTextWriter.cs
- SvcMapFile.cs
- HtmlInputImage.cs
- Variable.cs
- Expression.cs
- SqlError.cs
- MoveSizeWinEventHandler.cs
- PartManifestEntry.cs
- AuthenticationManager.cs
- TreeViewImageGenerator.cs
- SafeLibraryHandle.cs
- SecurityUtils.cs
- ErrorsHelper.cs
- CaseInsensitiveHashCodeProvider.cs
- X509CertificateValidationMode.cs
- ObjectListCommandEventArgs.cs
- DynamicPropertyHolder.cs
- remotingproxy.cs
- CodeGenerator.cs
- ValidatorUtils.cs
- OracleDataAdapter.cs
- CommandEventArgs.cs
- SoapServerMessage.cs
- ContractAdapter.cs
- QilName.cs
- SymbolType.cs
- TabletDeviceInfo.cs
- RegionData.cs
- ScriptResourceHandler.cs
- RowToFieldTransformer.cs
- BulletChrome.cs
- _PooledStream.cs
- AssemblyAttributesGoHere.cs
- RuntimeIdentifierPropertyAttribute.cs
- XmlUtil.cs
- IISUnsafeMethods.cs
- LongValidator.cs
- XPathEmptyIterator.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- XPathCompileException.cs
- EncryptedReference.cs
- MarshalByValueComponent.cs
- ExtentCqlBlock.cs
- X509Certificate2Collection.cs
- ActivityExecutionContext.cs
- Comparer.cs
- Tool.cs
- RootBuilder.cs
- MembershipAdapter.cs
- SemanticResultValue.cs
- CustomErrorCollection.cs
- ProviderUtil.cs
- mactripleDES.cs
- DBSchemaRow.cs
- UrlMappingsSection.cs
- Parsers.cs
- SingleStorage.cs
- PropertyInfoSet.cs
- DataProviderNameConverter.cs
- PreviewKeyDownEventArgs.cs
- X509Chain.cs
- DecoderFallback.cs
- PowerModeChangedEventArgs.cs
- XMLSchema.cs
- SqlParameterCollection.cs
- TabRenderer.cs
- MD5.cs
- WorkflowQueuingService.cs
- WindowsScrollBar.cs
- CaseDesigner.xaml.cs
- WindowsPrincipal.cs
- EnumerableWrapperWeakToStrong.cs
- ScrollBarRenderer.cs
- PackagePartCollection.cs
- StringFunctions.cs
- DataServiceHost.cs
- DataGridBoundColumn.cs
- PtsHost.cs
- ServiceModelConfigurationElementCollection.cs
- ECDiffieHellmanPublicKey.cs
- MapPathBasedVirtualPathProvider.cs
- SchemaCollectionCompiler.cs
- TextSearch.cs
- UserValidatedEventArgs.cs
- DataServiceBehavior.cs
- PreservationFileReader.cs
- NamedPipeWorkerProcess.cs
- ThicknessAnimation.cs
- SchemaImporter.cs
- RefType.cs
- XmlSchemaAny.cs
- StyleSelector.cs
- CompilationLock.cs
- CatalogPartCollection.cs
- StyleXamlParser.cs
- ProcessManager.cs