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
- PageAdapter.cs
- FrameworkObject.cs
- SmiSettersStream.cs
- MetadataPropertyCollection.cs
- QueryResults.cs
- ThicknessConverter.cs
- DocumentSequenceHighlightLayer.cs
- MarkedHighlightComponent.cs
- StrongNameMembershipCondition.cs
- RadioButtonList.cs
- TypeProvider.cs
- HyperLink.cs
- IconHelper.cs
- QuaternionAnimationBase.cs
- ClientSettingsSection.cs
- ContentHostHelper.cs
- GridView.cs
- BaseTemplateCodeDomTreeGenerator.cs
- Root.cs
- QilList.cs
- GridViewHeaderRowPresenter.cs
- StringDictionaryEditor.cs
- NetSectionGroup.cs
- X509ThumbprintKeyIdentifierClause.cs
- EntityContainerAssociationSet.cs
- HealthMonitoringSectionHelper.cs
- ScaleTransform3D.cs
- CodeGotoStatement.cs
- ControllableStoryboardAction.cs
- DropShadowEffect.cs
- ToolboxItemCollection.cs
- Pkcs7Signer.cs
- Validator.cs
- EntityContainerRelationshipSet.cs
- SourceElementsCollection.cs
- DiscoveryClientElement.cs
- BamlLocalizabilityResolver.cs
- HttpApplicationFactory.cs
- PagerSettings.cs
- LogLogRecord.cs
- KeyboardNavigation.cs
- CallInfo.cs
- CodeDomConfigurationHandler.cs
- Console.cs
- ProxyElement.cs
- ClickablePoint.cs
- safemediahandle.cs
- FontSource.cs
- QuaternionAnimation.cs
- ZoomPercentageConverter.cs
- ConnectionPoint.cs
- EdmSchemaAttribute.cs
- ReliabilityContractAttribute.cs
- MemberBinding.cs
- Sequence.cs
- ProgressBar.cs
- RoutedCommand.cs
- TrueReadOnlyCollection.cs
- TableCellsCollectionEditor.cs
- MetadataItem_Static.cs
- DbBuffer.cs
- QueryResult.cs
- SessionStateSection.cs
- StoryFragments.cs
- MarshalDirectiveException.cs
- LabelEditEvent.cs
- VectorAnimationUsingKeyFrames.cs
- IApplicationTrustManager.cs
- PrintDialog.cs
- SrgsElementList.cs
- BitmapEffectInputData.cs
- Quaternion.cs
- HttpDictionary.cs
- TypeRestriction.cs
- ProxyManager.cs
- TdsParserSafeHandles.cs
- OperationContractAttribute.cs
- CheckBoxField.cs
- DataControlFieldTypeEditor.cs
- SmtpMail.cs
- TextFragmentEngine.cs
- RuntimeWrappedException.cs
- InvalidDataContractException.cs
- TableRowCollection.cs
- BStrWrapper.cs
- UpDownBase.cs
- XmlSchemaInclude.cs
- WebConfigurationHostFileChange.cs
- CodeTypeReferenceExpression.cs
- TypeExtension.cs
- FileDataSourceCache.cs
- GlobalDataBindingHandler.cs
- TextDecorationCollectionConverter.cs
- PathFigure.cs
- PropertyGeneratedEventArgs.cs
- MarshalByValueComponent.cs
- RadioButtonList.cs
- Point3DConverter.cs
- InputGestureCollection.cs
- DataGridViewColumnCollectionDialog.cs