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
- CatalogZoneDesigner.cs
- ImportCatalogPart.cs
- SqlServer2KCompatibilityCheck.cs
- HttpStreams.cs
- ColorConvertedBitmap.cs
- HitTestWithPointDrawingContextWalker.cs
- MailAddress.cs
- FormViewInsertEventArgs.cs
- QueuePathDialog.cs
- DbCommandDefinition.cs
- XmlHierarchicalEnumerable.cs
- DiscoveryDocumentSearchPattern.cs
- UxThemeWrapper.cs
- ExpressionNormalizer.cs
- MimeFormImporter.cs
- TempFiles.cs
- Models.cs
- WebPartMovingEventArgs.cs
- EntityDataSourceConfigureObjectContext.cs
- Error.cs
- securitycriticaldataClass.cs
- TaskFormBase.cs
- MarshalByValueComponent.cs
- QueryPageSettingsEventArgs.cs
- MoveSizeWinEventHandler.cs
- XmlChildEnumerator.cs
- TableCellAutomationPeer.cs
- ServerIdentity.cs
- EncoderParameters.cs
- ReaderWriterLock.cs
- _DomainName.cs
- TextParagraph.cs
- UIElementParagraph.cs
- MatrixStack.cs
- IfAction.cs
- DownloadProgressEventArgs.cs
- SingleAnimationBase.cs
- TrackingStringDictionary.cs
- LinqDataSourceContextEventArgs.cs
- XmlAttributeOverrides.cs
- WindowsFormsEditorServiceHelper.cs
- _ListenerResponseStream.cs
- WS2007FederationHttpBindingElement.cs
- XmlConvert.cs
- ScriptReference.cs
- TransactionFlowOption.cs
- DataChangedEventManager.cs
- FrameworkElementFactory.cs
- ConstrainedGroup.cs
- ScrollItemProviderWrapper.cs
- TransformProviderWrapper.cs
- Debug.cs
- MessageSecurityProtocol.cs
- CacheDependency.cs
- ResourceBinder.cs
- CharAnimationBase.cs
- ClientRolePrincipal.cs
- StrongTypingException.cs
- SoapWriter.cs
- AssertSection.cs
- ToolStripMenuItemDesigner.cs
- ThreadStateException.cs
- DynamicDataRoute.cs
- InkPresenterAutomationPeer.cs
- Matrix3D.cs
- TransformerInfo.cs
- SynchronizedInputPattern.cs
- ContextStack.cs
- IdentifierCollection.cs
- MonthChangedEventArgs.cs
- HyperLinkDataBindingHandler.cs
- PtsHost.cs
- Parallel.cs
- BatchStream.cs
- XmlTextWriter.cs
- DurableMessageDispatchInspector.cs
- SimpleHandlerFactory.cs
- DataGridViewRowsRemovedEventArgs.cs
- CmsInterop.cs
- CompoundFileDeflateTransform.cs
- PeerCollaborationPermission.cs
- PersianCalendar.cs
- GridViewEditEventArgs.cs
- SerializableTypeCodeDomSerializer.cs
- SmiRequestExecutor.cs
- GreenMethods.cs
- AbstractSvcMapFileLoader.cs
- GeneralTransformGroup.cs
- SrgsOneOf.cs
- QilFactory.cs
- UnsafeNativeMethods.cs
- AmbientValueAttribute.cs
- CriticalExceptions.cs
- COMException.cs
- PackageFilter.cs
- BitmapEffectState.cs
- ObjectDataSource.cs
- Int32CollectionConverter.cs
- UnionExpr.cs
- ExceptionUtility.cs