Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- DbConnectionOptions.cs
- base64Transforms.cs
- HtmlHistory.cs
- BaseProcessor.cs
- ScrollChrome.cs
- DataSourceExpression.cs
- SecureEnvironment.cs
- SystemDropShadowChrome.cs
- HighContrastHelper.cs
- FileDataSourceCache.cs
- sqlpipe.cs
- XslNumber.cs
- HierarchicalDataBoundControl.cs
- UrlPath.cs
- NumberFormatInfo.cs
- ComplusTypeValidator.cs
- InheritedPropertyChangedEventArgs.cs
- DivideByZeroException.cs
- DrawingGroup.cs
- GridViewUpdateEventArgs.cs
- SamlAdvice.cs
- PathFigure.cs
- MediaContextNotificationWindow.cs
- Repeater.cs
- HtmlInputCheckBox.cs
- CompilerCollection.cs
- MenuEventArgs.cs
- DesignerCategoryAttribute.cs
- GroupBox.cs
- NullExtension.cs
- BitmapDownload.cs
- hebrewshape.cs
- ItemsChangedEventArgs.cs
- CodeNamespace.cs
- XmlValueConverter.cs
- SystemColorTracker.cs
- SystemException.cs
- SafeFileMappingHandle.cs
- ObjectContextServiceProvider.cs
- IsolatedStorageSecurityState.cs
- EventMappingSettings.cs
- ToolStripMenuItem.cs
- HtmlTitle.cs
- AssemblyHash.cs
- MarginsConverter.cs
- TCPListener.cs
- PageMediaSize.cs
- Base64Stream.cs
- DesignerTextViewAdapter.cs
- WindowsGraphics.cs
- DrawingContextDrawingContextWalker.cs
- DescendantBaseQuery.cs
- CultureSpecificStringDictionary.cs
- SynchronousReceiveBehavior.cs
- WebCategoryAttribute.cs
- AssociatedControlConverter.cs
- ExpressionVisitor.cs
- WindowPatternIdentifiers.cs
- TemplateBindingExpression.cs
- ProtocolImporter.cs
- RSAOAEPKeyExchangeDeformatter.cs
- TypeReference.cs
- EnumerableRowCollection.cs
- EventEntry.cs
- LabelTarget.cs
- BaseUriHelper.cs
- ToolStripControlHost.cs
- Binding.cs
- XmlCharacterData.cs
- ImageUrlEditor.cs
- MarkupExtensionReturnTypeAttribute.cs
- PowerStatus.cs
- StructuralObject.cs
- ContentHostHelper.cs
- LayoutUtils.cs
- Timer.cs
- BuildDependencySet.cs
- PolicyLevel.cs
- TextDecoration.cs
- FaultReasonText.cs
- XmlIncludeAttribute.cs
- WebPartConnectionsConnectVerb.cs
- Buffer.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- UnauthorizedWebPart.cs
- WebResourceAttribute.cs
- BackEase.cs
- StrokeNodeData.cs
- Int32Rect.cs
- SID.cs
- EntityDataSourceView.cs
- StringArrayConverter.cs
- HostingEnvironmentSection.cs
- GeneralTransform2DTo3DTo2D.cs
- Assert.cs
- TrustLevelCollection.cs
- StrongNamePublicKeyBlob.cs
- DefaultTypeArgumentAttribute.cs
- ValidatingReaderNodeData.cs
- WindowExtensionMethods.cs