Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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); } } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStrip.cs
- BufferModeSettings.cs
- ListViewContainer.cs
- ISFTagAndGuidCache.cs
- TableRowGroupCollection.cs
- PeerApplicationLaunchInfo.cs
- ListMarkerLine.cs
- TextTreeInsertUndoUnit.cs
- shaper.cs
- RIPEMD160Managed.cs
- QuaternionRotation3D.cs
- SchemaCollectionCompiler.cs
- SerializationTrace.cs
- FocusManager.cs
- Panel.cs
- EvidenceBase.cs
- PropertyNames.cs
- OperationFormatter.cs
- PageContent.cs
- WasAdminWrapper.cs
- DefaultTextStore.cs
- KnownTypeAttribute.cs
- MethodBuilderInstantiation.cs
- Comparer.cs
- RelatedImageListAttribute.cs
- ManifestSignedXml.cs
- PeerCollaborationPermission.cs
- ThreadPool.cs
- TemplatePagerField.cs
- ObjectIDGenerator.cs
- FlagPanel.cs
- StructuredProperty.cs
- ImagingCache.cs
- AttributeTable.cs
- PageRouteHandler.cs
- ScriptControl.cs
- FrameworkContentElement.cs
- InteropAutomationProvider.cs
- ToolStripContainer.cs
- ParallelRangeManager.cs
- DecimalKeyFrameCollection.cs
- Model3D.cs
- XmlMemberMapping.cs
- ToolStripDropDownItemDesigner.cs
- HtmlWindow.cs
- AppDomainFactory.cs
- DisplayInformation.cs
- SqlWebEventProvider.cs
- CollectionChange.cs
- DefaultEvaluationContext.cs
- PackageRelationship.cs
- RecognizeCompletedEventArgs.cs
- PrintEvent.cs
- TemplateApplicationHelper.cs
- PrintDocument.cs
- ConnectionsZone.cs
- RegistryKey.cs
- ProxyGenerationError.cs
- EntityParameterCollection.cs
- cookiecontainer.cs
- DesignRelationCollection.cs
- CompositeCollectionView.cs
- ShaderEffect.cs
- DefaultSection.cs
- RoleProviderPrincipal.cs
- SchemaTypeEmitter.cs
- DbDataSourceEnumerator.cs
- _BufferOffsetSize.cs
- StartUpEventArgs.cs
- Avt.cs
- RuntimeHandles.cs
- NavigationEventArgs.cs
- Size.cs
- SafeEventHandle.cs
- Grammar.cs
- RoleManagerModule.cs
- FrameworkElementAutomationPeer.cs
- ToolStripStatusLabel.cs
- ConnectionsZone.cs
- DataKey.cs
- Rect.cs
- StandardToolWindows.cs
- VectorCollectionConverter.cs
- WCFBuildProvider.cs
- StylusSystemGestureEventArgs.cs
- BufferBuilder.cs
- ServicePerformanceCounters.cs
- HtmlEncodedRawTextWriter.cs
- Aggregates.cs
- DataTableMapping.cs
- IBuiltInEvidence.cs
- PolyBezierSegment.cs
- LocalizableAttribute.cs
- CommonEndpointBehaviorElement.cs
- HtmlTable.cs
- ControlBuilder.cs
- GetRecipientListRequest.cs
- InitializerFacet.cs
- CodeAccessSecurityEngine.cs
- SqlUdtInfo.cs