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
- WebBrowserDocumentCompletedEventHandler.cs
- RetrieveVirtualItemEventArgs.cs
- XmlDocumentType.cs
- GraphicsPath.cs
- FormsAuthentication.cs
- COM2ICategorizePropertiesHandler.cs
- DataSourceDescriptorCollection.cs
- RepeatInfo.cs
- ClonableStack.cs
- StackOverflowException.cs
- CustomTokenProvider.cs
- X509Utils.cs
- ProtocolsConfigurationEntry.cs
- sqlstateclientmanager.cs
- CategoryNameCollection.cs
- ErrorProvider.cs
- MarkupCompiler.cs
- Soap.cs
- ModelTreeEnumerator.cs
- DefaultBindingPropertyAttribute.cs
- StrokeSerializer.cs
- EntityAdapter.cs
- BuilderPropertyEntry.cs
- XmlSchemaExternal.cs
- CompositeActivityTypeDescriptorProvider.cs
- XmlDesignerDataSourceView.cs
- ProfileParameter.cs
- ObjectSecurity.cs
- PropertyInformation.cs
- XslTransform.cs
- GrabHandleGlyph.cs
- DataFormats.cs
- TextChange.cs
- PermissionToken.cs
- NotifyCollectionChangedEventArgs.cs
- ApplicationContext.cs
- DataGridViewCellCollection.cs
- ProviderException.cs
- PageCache.cs
- ObjectTag.cs
- DataGridViewCheckBoxColumn.cs
- SkewTransform.cs
- FactoryGenerator.cs
- AmbientLight.cs
- CSharpCodeProvider.cs
- ApplicationSecurityManager.cs
- SystemDiagnosticsSection.cs
- SafeBitVector32.cs
- DynamicRouteExpression.cs
- VariableQuery.cs
- MatrixStack.cs
- TextSimpleMarkerProperties.cs
- CopyNodeSetAction.cs
- GenericQueueSurrogate.cs
- BoundColumn.cs
- WebMethodAttribute.cs
- OleDbParameterCollection.cs
- SQLMoneyStorage.cs
- DetailsViewInsertedEventArgs.cs
- ConstantCheck.cs
- EventLogPermissionEntry.cs
- JapaneseCalendar.cs
- RecognizerStateChangedEventArgs.cs
- WebPartVerb.cs
- ScrollItemPattern.cs
- ObjectDataSourceMethodEventArgs.cs
- SourceElementsCollection.cs
- PeerNameResolver.cs
- AssemblyCacheEntry.cs
- InternalBase.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- TimeZone.cs
- WindowsButton.cs
- BufferedStream2.cs
- XmlHierarchicalDataSourceView.cs
- Keyboard.cs
- ZoneMembershipCondition.cs
- InkCanvasSelection.cs
- DataServiceBuildProvider.cs
- WebPartsPersonalization.cs
- StateManagedCollection.cs
- RoleGroup.cs
- FutureFactory.cs
- ListBindingHelper.cs
- WindowShowOrOpenTracker.cs
- EntityContainerAssociationSet.cs
- DragEvent.cs
- XmlDomTextWriter.cs
- SocketSettings.cs
- AlgoModule.cs
- RawStylusInputReport.cs
- ModelItemDictionary.cs
- MimeReturn.cs
- SqlGatherConsumedAliases.cs
- Column.cs
- RegionIterator.cs
- TextSelection.cs
- RequestCacheManager.cs
- HighlightOverlayGlyph.cs
- ChooseAction.cs