Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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); } } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Pkcs7Signer.cs
- AppSettings.cs
- ArgumentException.cs
- HotSpot.cs
- DefaultCommandExtensionCallback.cs
- CacheRequest.cs
- SimpleColumnProvider.cs
- WhiteSpaceTrimStringConverter.cs
- SystemIcons.cs
- SecondaryIndex.cs
- PolicyStatement.cs
- GeneralTransform2DTo3D.cs
- RemotingConfiguration.cs
- LinkedResource.cs
- FieldNameLookup.cs
- DirtyTextRange.cs
- ExpressionPrefixAttribute.cs
- DataColumnMapping.cs
- ContentPlaceHolder.cs
- Vector3DAnimationUsingKeyFrames.cs
- ObjectComplexPropertyMapping.cs
- ServerValidateEventArgs.cs
- ArraySet.cs
- ReadOnlyDataSource.cs
- EntityDataSourceWrapperCollection.cs
- WebPartMenu.cs
- OdbcParameter.cs
- MetadataItemCollectionFactory.cs
- DragDrop.cs
- ToolboxCategory.cs
- AsymmetricSecurityProtocol.cs
- FunctionDetailsReader.cs
- Rect.cs
- DBSqlParserColumn.cs
- COMException.cs
- PaperSource.cs
- XmlSerializerOperationGenerator.cs
- WorkflowInlining.cs
- Transform.cs
- EpmCustomContentWriterNodeData.cs
- HashHelper.cs
- ServiceProviders.cs
- TextEditorParagraphs.cs
- WeakKeyDictionary.cs
- Semaphore.cs
- HiddenFieldPageStatePersister.cs
- KeyGestureConverter.cs
- UndoEngine.cs
- WorkflowFormatterBehavior.cs
- CompressStream.cs
- AvTraceFormat.cs
- PointAnimation.cs
- ZipPackage.cs
- ButtonFieldBase.cs
- ClientRuntimeConfig.cs
- DefaultTraceListener.cs
- WebPartEditorCancelVerb.cs
- BreakRecordTable.cs
- XPathNodeIterator.cs
- Literal.cs
- SocketPermission.cs
- UserNameSecurityToken.cs
- SchemaAttDef.cs
- EnumUnknown.cs
- Root.cs
- RegexInterpreter.cs
- GetWinFXPath.cs
- Logging.cs
- SoapCommonClasses.cs
- MaterializeFromAtom.cs
- PresentationTraceSources.cs
- StorageMappingFragment.cs
- X509CertificateChain.cs
- Scheduler.cs
- InternalConfigRoot.cs
- DoubleUtil.cs
- CodeVariableDeclarationStatement.cs
- BindingCollection.cs
- SqlServices.cs
- CultureInfoConverter.cs
- RelationshipEndCollection.cs
- TTSVoice.cs
- SqlAliaser.cs
- MultipleViewPattern.cs
- util.cs
- Line.cs
- DropShadowBitmapEffect.cs
- LateBoundChannelParameterCollection.cs
- EtwTrace.cs
- CorrelationManager.cs
- ProcessHostServerConfig.cs
- MultiView.cs
- Variable.cs
- BackgroundFormatInfo.cs
- ScrollBar.cs
- AmbientLight.cs
- BidPrivateBase.cs
- ComponentResourceKeyConverter.cs
- Empty.cs
- Expr.cs