Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- MatrixAnimationUsingKeyFrames.cs
- DeclaredTypeValidatorAttribute.cs
- MonthCalendar.cs
- UIElementParaClient.cs
- MimeReflector.cs
- InputMethodStateTypeInfo.cs
- Event.cs
- BindingRestrictions.cs
- ScrollData.cs
- X509ChainPolicy.cs
- PermissionSetTriple.cs
- SmiConnection.cs
- SHA512.cs
- ToolBar.cs
- WindowsRegion.cs
- XsltSettings.cs
- TextParagraphView.cs
- ITreeGenerator.cs
- CallContext.cs
- PenLineCapValidation.cs
- PageParserFilter.cs
- handlecollector.cs
- ProcessHostServerConfig.cs
- SecurityStateEncoder.cs
- BackStopAuthenticationModule.cs
- ApplicationSecurityManager.cs
- MasterPageBuildProvider.cs
- StreamingContext.cs
- NaturalLanguageHyphenator.cs
- MembershipSection.cs
- InputScope.cs
- LinkArea.cs
- DesignerActionListCollection.cs
- ChannelSinkStacks.cs
- NavigationHelper.cs
- _OverlappedAsyncResult.cs
- Pens.cs
- TypeExtensionSerializer.cs
- BindingObserver.cs
- Column.cs
- QilUnary.cs
- XmlSchemaAnyAttribute.cs
- WebPartManagerInternals.cs
- DbModificationClause.cs
- HashMembershipCondition.cs
- MultipartContentParser.cs
- PageBuildProvider.cs
- BitmapEffectrendercontext.cs
- QilStrConcat.cs
- loginstatus.cs
- DbModificationClause.cs
- NavigateEvent.cs
- BrowserCapabilitiesCodeGenerator.cs
- TextBoxDesigner.cs
- FileDialog.cs
- CompModSwitches.cs
- TextDecorations.cs
- EntityFrameworkVersions.cs
- WebPartDisplayMode.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- PtsContext.cs
- TraceData.cs
- RedistVersionInfo.cs
- ParameterCollection.cs
- ClientSession.cs
- InternalBase.cs
- ImplicitInputBrush.cs
- BamlBinaryReader.cs
- SelfIssuedTokenFactoryCredential.cs
- ConnectionsZone.cs
- ModelChangedEventArgsImpl.cs
- ToolStripDropDown.cs
- PersonalizationEntry.cs
- PaintValueEventArgs.cs
- Size.cs
- DataGridView.cs
- ConstructorArgumentAttribute.cs
- WorkflowRuntimeServiceElementCollection.cs
- HtmlTableRow.cs
- ComponentCodeDomSerializer.cs
- TextDecorationLocationValidation.cs
- EventBookmark.cs
- DesignerPainter.cs
- FillRuleValidation.cs
- JpegBitmapEncoder.cs
- GlyphRun.cs
- WmlControlAdapter.cs
- DialogResultConverter.cs
- COM2AboutBoxPropertyDescriptor.cs
- DataGridViewColumnEventArgs.cs
- SkinIDTypeConverter.cs
- ScopelessEnumAttribute.cs
- ContentIterators.cs
- ValidationHelper.cs
- WindowsUpDown.cs
- HtmlUtf8RawTextWriter.cs
- BaseUriHelper.cs
- TextLineBreak.cs
- XmlQueryRuntime.cs
- Normalization.cs