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
- StorageComplexTypeMapping.cs
- BooleanAnimationBase.cs
- DistributedTransactionPermission.cs
- ToggleButtonAutomationPeer.cs
- ScrollContentPresenter.cs
- BatchParser.cs
- initElementDictionary.cs
- DrawingAttributeSerializer.cs
- LocalFileSettingsProvider.cs
- ConditionalExpression.cs
- FamilyMapCollection.cs
- ToolStripStatusLabel.cs
- LocatorPartList.cs
- Light.cs
- DependencyObjectType.cs
- Attributes.cs
- ColumnClickEvent.cs
- VerticalAlignConverter.cs
- TypeInformation.cs
- WebPartEditorOkVerb.cs
- ControlUtil.cs
- DetailsViewRow.cs
- SizeConverter.cs
- Walker.cs
- ScrollableControl.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- XPathParser.cs
- TdsValueSetter.cs
- FontUnitConverter.cs
- TreeNodeStyleCollection.cs
- ActivityMarkupSerializationProvider.cs
- HintTextMaxWidthConverter.cs
- PagerSettings.cs
- InkPresenterAutomationPeer.cs
- OdbcReferenceCollection.cs
- Opcode.cs
- HttpBrowserCapabilitiesWrapper.cs
- Site.cs
- XmlElementCollection.cs
- InvokeAction.cs
- AxHost.cs
- PersonalizableTypeEntry.cs
- Attribute.cs
- DictionarySectionHandler.cs
- StringUtil.cs
- HtmlShimManager.cs
- CodeRegionDirective.cs
- ToolStripSeparator.cs
- FileAccessException.cs
- StateDesigner.LayoutSelectionGlyph.cs
- Utilities.cs
- OdbcConnection.cs
- VirtualPathProvider.cs
- WebEventTraceProvider.cs
- PagesChangedEventArgs.cs
- NotFiniteNumberException.cs
- MdiWindowListItemConverter.cs
- DefaultEventAttribute.cs
- CheckBoxField.cs
- PublishLicense.cs
- TextEditorCopyPaste.cs
- OdbcParameterCollection.cs
- WSHttpBinding.cs
- VersionPair.cs
- NonceToken.cs
- InvokeMemberBinder.cs
- UnmanagedMemoryStreamWrapper.cs
- DataQuery.cs
- Normalization.cs
- DataObjectFieldAttribute.cs
- VsPropertyGrid.cs
- httpstaticobjectscollection.cs
- HostVisual.cs
- UriGenerator.cs
- ExceptionUtil.cs
- EdmSchemaAttribute.cs
- MultipleViewProviderWrapper.cs
- FastPropertyAccessor.cs
- SqlDeflator.cs
- DesignerContextDescriptor.cs
- GrammarBuilderRuleRef.cs
- WebPartVerbCollection.cs
- TimeSpanValidatorAttribute.cs
- Identity.cs
- mil_commands.cs
- ViewGenResults.cs
- MimeTypeAttribute.cs
- OneOfTypeConst.cs
- ScriptingJsonSerializationSection.cs
- Perspective.cs
- SmiTypedGetterSetter.cs
- CodeMethodInvokeExpression.cs
- SoapFormatter.cs
- ScrollChrome.cs
- Page.cs
- WebPartConnectionCollection.cs
- NameValueFileSectionHandler.cs
- DependencyObjectPropertyDescriptor.cs
- ACE.cs
- CngUIPolicy.cs