Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / Microsoft / Win32 / SafeHandles / Win32SafeHandles.cs / 1 / Win32SafeHandles.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// Abstract derivations of SafeHandle designed to provide the common
// functionality supporting Win32 handles. More specifically, they describe how
// an invalid handle looks (for instance, some handles use -1 as an invalid
// handle value, others use 0).
//
// Further derivations of these classes can specialise this even further (e.g.
// file or registry handles).
//
//
using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Security.Permissions;
using System.Runtime.ConstrainedExecution;
namespace Microsoft.Win32.SafeHandles
{
// Class of safe handle which uses 0 or -1 as an invalid handle.
[SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)]
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]
public abstract class SafeHandleZeroOrMinusOneIsInvalid : SafeHandle
{
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
protected SafeHandleZeroOrMinusOneIsInvalid(bool ownsHandle) : base(IntPtr.Zero, ownsHandle)
{
}
public override bool IsInvalid {
get { return handle.IsNull() || handle == new IntPtr(-1); }
}
}
// Class of safe handle which uses only -1 as an invalid handle.
[SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)]
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]
public abstract class SafeHandleMinusOneIsInvalid : SafeHandle
{
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
protected SafeHandleMinusOneIsInvalid(bool ownsHandle) : base(new IntPtr(-1), ownsHandle)
{
}
public override bool IsInvalid {
get { return handle == new IntPtr(-1); }
}
}
// Class of critical handle which uses 0 or -1 as an invalid handle.
[SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)]
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]
public abstract class CriticalHandleZeroOrMinusOneIsInvalid : CriticalHandle
{
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
protected CriticalHandleZeroOrMinusOneIsInvalid() : base(IntPtr.Zero)
{
}
public override bool IsInvalid {
get { return handle.IsNull() || handle == new IntPtr(-1); }
}
}
// Class of critical handle which uses only -1 as an invalid handle.
[SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)]
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]
public abstract class CriticalHandleMinusOneIsInvalid : CriticalHandle
{
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
protected CriticalHandleMinusOneIsInvalid() : base(new IntPtr(-1))
{
}
public override bool IsInvalid {
get { return handle == new IntPtr(-1); }
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// Abstract derivations of SafeHandle designed to provide the common
// functionality supporting Win32 handles. More specifically, they describe how
// an invalid handle looks (for instance, some handles use -1 as an invalid
// handle value, others use 0).
//
// Further derivations of these classes can specialise this even further (e.g.
// file or registry handles).
//
//
using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Security.Permissions;
using System.Runtime.ConstrainedExecution;
namespace Microsoft.Win32.SafeHandles
{
// Class of safe handle which uses 0 or -1 as an invalid handle.
[SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)]
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]
public abstract class SafeHandleZeroOrMinusOneIsInvalid : SafeHandle
{
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
protected SafeHandleZeroOrMinusOneIsInvalid(bool ownsHandle) : base(IntPtr.Zero, ownsHandle)
{
}
public override bool IsInvalid {
get { return handle.IsNull() || handle == new IntPtr(-1); }
}
}
// Class of safe handle which uses only -1 as an invalid handle.
[SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)]
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]
public abstract class SafeHandleMinusOneIsInvalid : SafeHandle
{
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
protected SafeHandleMinusOneIsInvalid(bool ownsHandle) : base(new IntPtr(-1), ownsHandle)
{
}
public override bool IsInvalid {
get { return handle == new IntPtr(-1); }
}
}
// Class of critical handle which uses 0 or -1 as an invalid handle.
[SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)]
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]
public abstract class CriticalHandleZeroOrMinusOneIsInvalid : CriticalHandle
{
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
protected CriticalHandleZeroOrMinusOneIsInvalid() : base(IntPtr.Zero)
{
}
public override bool IsInvalid {
get { return handle.IsNull() || handle == new IntPtr(-1); }
}
}
// Class of critical handle which uses only -1 as an invalid handle.
[SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)]
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]
public abstract class CriticalHandleMinusOneIsInvalid : CriticalHandle
{
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
protected CriticalHandleMinusOneIsInvalid() : base(new IntPtr(-1))
{
}
public override bool IsInvalid {
get { return handle == new IntPtr(-1); }
}
}
}
// 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
- DictionarySectionHandler.cs
- Command.cs
- RoleExceptions.cs
- X509Certificate.cs
- DateTimeConverter.cs
- XmlBoundElement.cs
- SqlGenericUtil.cs
- DetailsViewRowCollection.cs
- VariantWrapper.cs
- HebrewNumber.cs
- DeclarativeCatalogPartDesigner.cs
- DesignSurfaceEvent.cs
- MethodBuilder.cs
- HyperLink.cs
- DbXmlEnabledProviderManifest.cs
- StringArrayConverter.cs
- SamlAssertionKeyIdentifierClause.cs
- Size.cs
- SystemIcmpV6Statistics.cs
- DataFormats.cs
- Trace.cs
- NamespaceList.cs
- SafeRightsManagementPubHandle.cs
- Vector3DValueSerializer.cs
- ServiceInfo.cs
- HostedElements.cs
- WindowsFormsHostPropertyMap.cs
- EntityDataSourceSelectingEventArgs.cs
- ProxyManager.cs
- PrintControllerWithStatusDialog.cs
- VerificationAttribute.cs
- PeerNameResolver.cs
- PeerContact.cs
- BooleanToVisibilityConverter.cs
- Path.cs
- HttpRuntimeSection.cs
- SqlLiftWhereClauses.cs
- NumericUpDownAccelerationCollection.cs
- SiteMapDataSource.cs
- QualifiedCellIdBoolean.cs
- ProviderUtil.cs
- SymbolMethod.cs
- FormViewPagerRow.cs
- PlatformCulture.cs
- XmlProcessingInstruction.cs
- WsatTransactionFormatter.cs
- ProcessProtocolHandler.cs
- XmlDocumentSurrogate.cs
- CrossSiteScriptingValidation.cs
- HttpRequestCacheValidator.cs
- GraphicsPath.cs
- XmlSchemaAttributeGroup.cs
- EntityDataSourceEntitySetNameItem.cs
- XmlRawWriter.cs
- XmlSchemaAnnotation.cs
- Journaling.cs
- BuildManager.cs
- Stacktrace.cs
- SimpleRecyclingCache.cs
- SQLGuidStorage.cs
- SamlAssertionDirectKeyIdentifierClause.cs
- BufferModeSettings.cs
- HtmlWindow.cs
- _WebProxyDataBuilder.cs
- DecoderBestFitFallback.cs
- ContainerParagraph.cs
- UidPropertyAttribute.cs
- ClientViaElement.cs
- CodeDomDesignerLoader.cs
- NamedPipeChannelListener.cs
- CompiledRegexRunnerFactory.cs
- ClrProviderManifest.cs
- ConcurrentBag.cs
- XmlIncludeAttribute.cs
- SystemIPv6InterfaceProperties.cs
- ItemContainerGenerator.cs
- ControlBuilderAttribute.cs
- System.Data_BID.cs
- UndirectedGraph.cs
- XPathAxisIterator.cs
- prompt.cs
- EdmSchemaAttribute.cs
- CodeMethodReturnStatement.cs
- DateTime.cs
- StructuredProperty.cs
- ConnectorEditor.cs
- GroupLabel.cs
- ScriptResourceInfo.cs
- SuppressMergeCheckAttribute.cs
- RSAOAEPKeyExchangeDeformatter.cs
- ToolboxItemSnapLineBehavior.cs
- XmlDataFileEditor.cs
- TableColumn.cs
- DataBoundControlHelper.cs
- SocketStream.cs
- HotCommands.cs
- InstanceDataCollection.cs
- TreeNodeBindingCollection.cs
- AuthenticationSection.cs
- ListView.cs