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
- CommonRemoteMemoryBlock.cs
- ParallelEnumerable.cs
- ActionFrame.cs
- SerializationStore.cs
- OperationResponse.cs
- LastQueryOperator.cs
- DockPanel.cs
- CatalogPart.cs
- PowerStatus.cs
- PerformanceCounter.cs
- StringFormat.cs
- PackageRelationshipCollection.cs
- ObservableCollection.cs
- InterleavedZipPartStream.cs
- RegexReplacement.cs
- CryptoStream.cs
- ControlIdConverter.cs
- DataRowChangeEvent.cs
- StickyNoteContentControl.cs
- MetadataItem.cs
- WebPartEditVerb.cs
- SqlXmlStorage.cs
- CompilerCollection.cs
- AttributeSetAction.cs
- ProxyWebPart.cs
- FunctionMappingTranslator.cs
- CornerRadiusConverter.cs
- SoapInteropTypes.cs
- PropertyFilterAttribute.cs
- MdiWindowListItemConverter.cs
- ZipIOExtraFieldElement.cs
- SqlParameterCollection.cs
- BitmapEffectGeneralTransform.cs
- DomNameTable.cs
- SymbolMethod.cs
- ExecutionContext.cs
- EntityDataSourceWizardForm.cs
- DirectionalLight.cs
- MenuItemStyleCollection.cs
- Vector3DAnimation.cs
- SqlRowUpdatedEvent.cs
- OracleInternalConnection.cs
- ObjectConverter.cs
- DesignerSerializerAttribute.cs
- ByeMessage11.cs
- Random.cs
- PropertyGridCommands.cs
- SubMenuStyleCollection.cs
- _Events.cs
- BaseServiceProvider.cs
- CompositionTarget.cs
- PerfCounters.cs
- WindowsTooltip.cs
- HttpException.cs
- RequestQueue.cs
- TextElementEditingBehaviorAttribute.cs
- GenericTypeParameterBuilder.cs
- CmsInterop.cs
- BamlResourceContent.cs
- SystemTcpConnection.cs
- StrongNameHelpers.cs
- MenuAdapter.cs
- WpfSharedXamlSchemaContext.cs
- HttpStreamMessage.cs
- CodeAttachEventStatement.cs
- TextEndOfSegment.cs
- RuleAction.cs
- IERequestCache.cs
- PasswordPropertyTextAttribute.cs
- ContentElement.cs
- StylusButtonCollection.cs
- DockPanel.cs
- RoleService.cs
- ListBindableAttribute.cs
- ListCollectionView.cs
- ReadWriteObjectLock.cs
- UpdateCommand.cs
- TreeBuilder.cs
- Package.cs
- CommentEmitter.cs
- CollectionEditorDialog.cs
- XamlToRtfParser.cs
- TypeUtil.cs
- TreeNodeEventArgs.cs
- TextServicesHost.cs
- RC2CryptoServiceProvider.cs
- GestureRecognitionResult.cs
- SecurityHeaderTokenResolver.cs
- HandlerFactoryWrapper.cs
- TransactionChannelFactory.cs
- ToolStripArrowRenderEventArgs.cs
- ResourceDescriptionAttribute.cs
- ObfuscationAttribute.cs
- UInt16Storage.cs
- TabPanel.cs
- XmlParserContext.cs
- FormViewUpdateEventArgs.cs
- HtmlInputPassword.cs
- MetafileHeader.cs
- XmlCDATASection.cs