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
- CrossAppDomainChannel.cs
- securestring.cs
- Rfc2898DeriveBytes.cs
- XmlNamespaceDeclarationsAttribute.cs
- SQLChars.cs
- DataGridViewCellStyleConverter.cs
- RegexCompilationInfo.cs
- SystemIPGlobalStatistics.cs
- XmlSerializerSection.cs
- Array.cs
- SmtpAuthenticationManager.cs
- BinaryNode.cs
- NativeWindow.cs
- SudsWriter.cs
- EventProxy.cs
- HotSpotCollectionEditor.cs
- RegisteredHiddenField.cs
- RoleService.cs
- SchemaSetCompiler.cs
- XmlSerializationReader.cs
- ToolStripItemBehavior.cs
- X509SecurityTokenProvider.cs
- HttpGetProtocolImporter.cs
- WebHttpDispatchOperationSelectorData.cs
- QilLiteral.cs
- InterleavedZipPartStream.cs
- TaskExtensions.cs
- EFColumnProvider.cs
- XmlIlGenerator.cs
- JournalEntryStack.cs
- DataContract.cs
- PersonalizationProviderCollection.cs
- httpstaticobjectscollection.cs
- UriExt.cs
- RijndaelManagedTransform.cs
- InlineObject.cs
- LinqDataView.cs
- InterleavedZipPartStream.cs
- XsdBuilder.cs
- SystemFonts.cs
- FormatConvertedBitmap.cs
- CurrencyManager.cs
- CurrencyManager.cs
- PenContexts.cs
- SID.cs
- NoPersistProperty.cs
- XdrBuilder.cs
- OutOfProcStateClientManager.cs
- BaseParagraph.cs
- ColumnMapProcessor.cs
- ParameterToken.cs
- SqlBulkCopy.cs
- DoubleUtil.cs
- CustomPopupPlacement.cs
- CompatibleIComparer.cs
- FillBehavior.cs
- SourceFilter.cs
- ExpressionPrefixAttribute.cs
- PersonalizationStateQuery.cs
- ReachVisualSerializerAsync.cs
- SecurityToken.cs
- RangeValidator.cs
- ValueQuery.cs
- UnsafeNativeMethods.cs
- HtmlImage.cs
- BasicKeyConstraint.cs
- BCLDebug.cs
- SelfIssuedSamlTokenFactory.cs
- ListViewHitTestInfo.cs
- TreePrinter.cs
- TdsParserStaticMethods.cs
- TextRangeEdit.cs
- QueryConverter.cs
- ExpressionVisitor.cs
- ChannelManager.cs
- EmbeddedMailObject.cs
- ClosableStream.cs
- WindowsPen.cs
- safelink.cs
- DecimalStorage.cs
- ChannelDispatcherCollection.cs
- BasicViewGenerator.cs
- StylusSystemGestureEventArgs.cs
- DataServiceQuery.cs
- ButtonBase.cs
- BlockUIContainer.cs
- DefinitionUpdate.cs
- SqlTransaction.cs
- HttpModulesSection.cs
- CodeStatement.cs
- SchemaLookupTable.cs
- StrokeCollection.cs
- Point.cs
- XhtmlBasicObjectListAdapter.cs
- EmptyControlCollection.cs
- TriggerCollection.cs
- IList.cs
- WsatTransactionFormatter.cs
- ThreadAttributes.cs
- RIPEMD160Managed.cs