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
- ObjectAssociationEndMapping.cs
- ServiceReference.cs
- dtdvalidator.cs
- ConcurrencyBehavior.cs
- Viewport2DVisual3D.cs
- TextLineBreak.cs
- CharEnumerator.cs
- WebControlAdapter.cs
- KeyValuePairs.cs
- NotCondition.cs
- MemberDescriptor.cs
- DBCommand.cs
- AssemblyCache.cs
- TabControlAutomationPeer.cs
- ReadOnlyCollectionBase.cs
- ReliabilityContractAttribute.cs
- safelinkcollection.cs
- ListSortDescriptionCollection.cs
- HtmlInputPassword.cs
- AncestorChangedEventArgs.cs
- WindowsListViewGroupHelper.cs
- SkipStoryboardToFill.cs
- DataGridViewAccessibleObject.cs
- WebServiceData.cs
- CqlWriter.cs
- HtmlDocument.cs
- PropertyDescriptorComparer.cs
- PriorityQueue.cs
- ExtendedProtectionPolicy.cs
- COM2ExtendedBrowsingHandler.cs
- EventLogConfiguration.cs
- TableStyle.cs
- SqlUdtInfo.cs
- DbException.cs
- PolyLineSegmentFigureLogic.cs
- DrawingState.cs
- ObjectListFieldsPage.cs
- MetadataExporter.cs
- MediaTimeline.cs
- _ListenerAsyncResult.cs
- CorrelationTokenInvalidatedHandler.cs
- ThrowHelper.cs
- ConfigurationElement.cs
- TextServicesCompartmentEventSink.cs
- StringPropertyBuilder.cs
- WindowsRebar.cs
- DesignerActionGlyph.cs
- ClientSponsor.cs
- Tokenizer.cs
- SqlConnectionFactory.cs
- SemanticAnalyzer.cs
- XmlSchemaGroupRef.cs
- BaseTreeIterator.cs
- XhtmlBasicPanelAdapter.cs
- GridViewRow.cs
- NameSpaceEvent.cs
- RtfFormatStack.cs
- HierarchicalDataBoundControl.cs
- SessionParameter.cs
- versioninfo.cs
- OleAutBinder.cs
- GridItemPattern.cs
- InstanceStoreQueryResult.cs
- DataGridColumnCollectionEditor.cs
- TemplateBindingExpressionConverter.cs
- ParameterEditorUserControl.cs
- Menu.cs
- StackOverflowException.cs
- DockPanel.cs
- JpegBitmapEncoder.cs
- DoubleLinkListEnumerator.cs
- CompilationUtil.cs
- PointValueSerializer.cs
- CqlIdentifiers.cs
- DataGridViewRow.cs
- ApplicationInfo.cs
- TextReader.cs
- RegistryPermission.cs
- Soap.cs
- TrustSection.cs
- SqlSupersetValidator.cs
- DBConnectionString.cs
- GacUtil.cs
- SecureConversationServiceCredential.cs
- CompilerLocalReference.cs
- MetadataItemEmitter.cs
- AsyncResult.cs
- XPathSelfQuery.cs
- SafeHandle.cs
- EditorAttributeInfo.cs
- WebBrowserSiteBase.cs
- MeshGeometry3D.cs
- EntityContainerAssociationSet.cs
- ParagraphVisual.cs
- TextRenderer.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ManipulationDelta.cs
- PagedDataSource.cs
- CompositeDataBoundControl.cs
- ComplexBindingPropertiesAttribute.cs