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
- DataRecord.cs
- SequenceQuery.cs
- EventHandlersDesigner.cs
- ListChunk.cs
- FontStyles.cs
- StaticExtension.cs
- PolyBezierSegment.cs
- AgileSafeNativeMemoryHandle.cs
- InternalTypeHelper.cs
- TagElement.cs
- WebServiceData.cs
- PropertyValueChangedEvent.cs
- MailAddressCollection.cs
- DefaultParameterValueAttribute.cs
- DrawTreeNodeEventArgs.cs
- Bidi.cs
- MsmqHostedTransportConfiguration.cs
- FunctionQuery.cs
- TabletCollection.cs
- TokenBasedSetEnumerator.cs
- DefaultWorkflowLoaderService.cs
- ConstrainedDataObject.cs
- mil_commands.cs
- HashCodeCombiner.cs
- XmlnsPrefixAttribute.cs
- TranslateTransform3D.cs
- BuilderPropertyEntry.cs
- ClientRolePrincipal.cs
- WorkflowMessageEventHandler.cs
- Int16KeyFrameCollection.cs
- EntityTypeBase.cs
- ObjectStateFormatter.cs
- UpdateCommand.cs
- RawStylusSystemGestureInputReport.cs
- _Connection.cs
- SendMessageRecord.cs
- COM2PropertyBuilderUITypeEditor.cs
- CustomErrorCollection.cs
- TabItem.cs
- RoutingBehavior.cs
- UndirectedGraph.cs
- KnownColorTable.cs
- IBuiltInEvidence.cs
- ControlValuePropertyAttribute.cs
- TaskFormBase.cs
- Pkcs9Attribute.cs
- WebPartHeaderCloseVerb.cs
- CategoryNameCollection.cs
- SQLSingle.cs
- ValueOfAction.cs
- InputLanguage.cs
- PersonalizationProviderHelper.cs
- ExpressionConverter.cs
- ILGenerator.cs
- DataExpression.cs
- StaticSiteMapProvider.cs
- SelectionRange.cs
- XmlCharCheckingWriter.cs
- SqlCacheDependencyDatabase.cs
- InvokeHandlers.cs
- EventInfo.cs
- ReferentialConstraint.cs
- SerialPort.cs
- HashHelpers.cs
- InputElement.cs
- NumberFunctions.cs
- AvTrace.cs
- TextTreeRootTextBlock.cs
- FrameworkObject.cs
- SelectionProcessor.cs
- TypeConverterAttribute.cs
- HashJoinQueryOperatorEnumerator.cs
- XmlNamedNodeMap.cs
- XmlAttributeAttribute.cs
- ButtonBase.cs
- MeshGeometry3D.cs
- UInt32Converter.cs
- CharUnicodeInfo.cs
- WebRequestModulesSection.cs
- BuildProviderAppliesToAttribute.cs
- CodePrimitiveExpression.cs
- PersonalizationProvider.cs
- MergePropertyDescriptor.cs
- ToolStripItemClickedEventArgs.cs
- WindowsIPAddress.cs
- GenericTypeParameterBuilder.cs
- UxThemeWrapper.cs
- DataContext.cs
- RemotingSurrogateSelector.cs
- ListBoxChrome.cs
- Select.cs
- InheritanceContextHelper.cs
- DecimalStorage.cs
- HttpClientCertificate.cs
- cache.cs
- DesignerRegionMouseEventArgs.cs
- OdbcStatementHandle.cs
- GroupQuery.cs
- LookupNode.cs
- ConfigXmlAttribute.cs