Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / PtsHost / UnmanagedHandle.cs / 1305600 / UnmanagedHandle.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: UnmanagedHandle.cs
//
// Description: Definition for Unmanaged Handle. Provides identity (handle),
// which can be used in unmanaged world.
//
// History:
// 05/02/2003 : [....] - moving from Avalon branch.
//
//---------------------------------------------------------------------------
using System;
namespace MS.Internal.PtsHost
{
///
/// Provides identity (handle), which can be used in unmanaged world.
/// If object is passed into unmanaged world, and there is a need to identify
/// that object later on, its class should inherit from UnmanagedHandle.
///
internal class UnmanagedHandle : IDisposable
{
///
/// Constructor. Used when object derives from UnmanagedHandle.
///
///
/// PTS context
///
protected UnmanagedHandle(PtsContext ptsContext)
{
_ptsContext = ptsContext;
_handle = ptsContext.CreateHandle(this);
}
///
/// Dispose the object and release handle.
///
public virtual void Dispose()
{
try
{
_ptsContext.ReleaseHandle(_handle);
}
finally
{
_handle = IntPtr.Zero;
}
GC.SuppressFinalize(this);
}
///
/// Handle of an object.
///
internal IntPtr Handle
{
get
{
return _handle;
}
}
private IntPtr _handle;
///
/// PtsContext that is the owner of the handle.
/// It is required to store it here for Dispose. When Dispose is called
/// it is not always possible to get instance of PtsContext that
/// has been used to create this handle.
///
internal PtsContext PtsContext { get { return _ptsContext; } }
private readonly PtsContext _ptsContext;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: UnmanagedHandle.cs
//
// Description: Definition for Unmanaged Handle. Provides identity (handle),
// which can be used in unmanaged world.
//
// History:
// 05/02/2003 : [....] - moving from Avalon branch.
//
//---------------------------------------------------------------------------
using System;
namespace MS.Internal.PtsHost
{
///
/// Provides identity (handle), which can be used in unmanaged world.
/// If object is passed into unmanaged world, and there is a need to identify
/// that object later on, its class should inherit from UnmanagedHandle.
///
internal class UnmanagedHandle : IDisposable
{
///
/// Constructor. Used when object derives from UnmanagedHandle.
///
///
/// PTS context
///
protected UnmanagedHandle(PtsContext ptsContext)
{
_ptsContext = ptsContext;
_handle = ptsContext.CreateHandle(this);
}
///
/// Dispose the object and release handle.
///
public virtual void Dispose()
{
try
{
_ptsContext.ReleaseHandle(_handle);
}
finally
{
_handle = IntPtr.Zero;
}
GC.SuppressFinalize(this);
}
///
/// Handle of an object.
///
internal IntPtr Handle
{
get
{
return _handle;
}
}
private IntPtr _handle;
///
/// PtsContext that is the owner of the handle.
/// It is required to store it here for Dispose. When Dispose is called
/// it is not always possible to get instance of PtsContext that
/// has been used to create this handle.
///
internal PtsContext PtsContext { get { return _ptsContext; } }
private readonly PtsContext _ptsContext;
}
}
// 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
- MouseEventArgs.cs
- FocusManager.cs
- CFGGrammar.cs
- Tool.cs
- DelayedRegex.cs
- URI.cs
- Constraint.cs
- Logging.cs
- BaseValidator.cs
- OdbcDataAdapter.cs
- AmbientProperties.cs
- SchemaAttDef.cs
- GeneralTransform.cs
- Win32NamedPipes.cs
- LassoHelper.cs
- DependencySource.cs
- CultureSpecificCharacterBufferRange.cs
- ByteKeyFrameCollection.cs
- RefExpr.cs
- ConfigViewGenerator.cs
- SHA1.cs
- TextProviderWrapper.cs
- UriSectionData.cs
- BufferedGraphics.cs
- TcpStreams.cs
- Utility.cs
- CollectionViewGroupRoot.cs
- CLSCompliantAttribute.cs
- DropShadowBitmapEffect.cs
- AppDomainUnloadedException.cs
- _IPv6Address.cs
- ActiveDocumentEvent.cs
- ScrollBarAutomationPeer.cs
- HierarchicalDataTemplate.cs
- ChineseLunisolarCalendar.cs
- HttpProcessUtility.cs
- Assembly.cs
- WebRequestModuleElementCollection.cs
- BamlBinaryWriter.cs
- DBDataPermissionAttribute.cs
- ChannelManagerService.cs
- ValidationErrorInfo.cs
- XpsFilter.cs
- RadioButton.cs
- TextRange.cs
- TextFindEngine.cs
- TaiwanLunisolarCalendar.cs
- SqlGatherProducedAliases.cs
- NonSerializedAttribute.cs
- ConnectionStringSettingsCollection.cs
- ObjectMemberMapping.cs
- XmlBinaryReader.cs
- WebReference.cs
- FrameSecurityDescriptor.cs
- Thumb.cs
- NativeMethods.cs
- MissingSatelliteAssemblyException.cs
- Baml2006ReaderSettings.cs
- CodeIdentifier.cs
- HttpRequest.cs
- ToolStripDropDownClosingEventArgs.cs
- CalloutQueueItem.cs
- XmlEncoding.cs
- XPathNodeInfoAtom.cs
- TextBoxDesigner.cs
- MetadataItem.cs
- ImageInfo.cs
- ByteAnimationBase.cs
- MoveSizeWinEventHandler.cs
- ItemCollection.cs
- CharAnimationUsingKeyFrames.cs
- EntityDataSourceContextCreatingEventArgs.cs
- XmlSchemaAppInfo.cs
- References.cs
- Label.cs
- SecureUICommand.cs
- EntityDataSourceConfigureObjectContext.cs
- NotSupportedException.cs
- CqlErrorHelper.cs
- CodeSnippetTypeMember.cs
- ShapeTypeface.cs
- PeerTransportSecuritySettings.cs
- TileBrush.cs
- UrlPath.cs
- TemplateBindingExpression.cs
- ViewManager.cs
- ImmutableObjectAttribute.cs
- BitmapImage.cs
- NamespaceCollection.cs
- InternalMappingException.cs
- SizeConverter.cs
- UrlAuthFailedErrorFormatter.cs
- XmlUnspecifiedAttribute.cs
- Marshal.cs
- SqlConnection.cs
- CryptoSession.cs
- Rect3DValueSerializer.cs
- OneToOneMappingSerializer.cs
- RankException.cs
- EdmToObjectNamespaceMap.cs