Code:
/ FX-1434 / FX-1434 / 1.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
- SecurityContext.cs
- GridViewRowCollection.cs
- VirtualizedItemProviderWrapper.cs
- OperatingSystem.cs
- GridViewPageEventArgs.cs
- UserPreferenceChangedEventArgs.cs
- PropertyChangedEventManager.cs
- SiteMapSection.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- BindMarkupExtensionSerializer.cs
- MappableObjectManager.cs
- XamlReaderHelper.cs
- XPathParser.cs
- OleAutBinder.cs
- OutOfMemoryException.cs
- WasHttpHandlersInstallComponent.cs
- IgnoreSectionHandler.cs
- __ComObject.cs
- BindingExpressionUncommonField.cs
- CatalogPartChrome.cs
- DesignerAdapterUtil.cs
- XmlDataCollection.cs
- LifetimeServices.cs
- BitVector32.cs
- TimeZone.cs
- Privilege.cs
- ThousandthOfEmRealPoints.cs
- HMAC.cs
- SessionStateContainer.cs
- DiscoveryClientOutputChannel.cs
- XmlDictionaryReader.cs
- SystemIPv4InterfaceProperties.cs
- QuestionEventArgs.cs
- SequentialUshortCollection.cs
- FileDialogCustomPlaces.cs
- RoutingExtension.cs
- SecurityTokenValidationException.cs
- WebPartZoneCollection.cs
- FlagsAttribute.cs
- IndexOutOfRangeException.cs
- PersistencePipeline.cs
- WebReferenceCollection.cs
- HttpDebugHandler.cs
- DesignerPainter.cs
- DefaultEventAttribute.cs
- Canvas.cs
- PrintPreviewDialog.cs
- EdmItemCollection.OcAssemblyCache.cs
- ValidatingPropertiesEventArgs.cs
- DSGeneratorProblem.cs
- Label.cs
- DecimalAverageAggregationOperator.cs
- _OverlappedAsyncResult.cs
- _ListenerAsyncResult.cs
- TimeStampChecker.cs
- Debug.cs
- CompiledQuery.cs
- ScalarRestriction.cs
- StylusPlugin.cs
- StorageInfo.cs
- ActivityCodeDomReferenceService.cs
- XmlName.cs
- ContainerFilterService.cs
- PageCopyCount.cs
- RecipientIdentity.cs
- IdentityReference.cs
- TraceLog.cs
- Int16KeyFrameCollection.cs
- SafePEFileHandle.cs
- TextStore.cs
- HtmlLink.cs
- AvTraceFormat.cs
- DynamicResourceExtension.cs
- ExpressionWriter.cs
- DbConnectionPoolGroup.cs
- XmlAnyAttributeAttribute.cs
- FamilyTypeface.cs
- EmissiveMaterial.cs
- HtmlTableRowCollection.cs
- CodePrimitiveExpression.cs
- LocalFileSettingsProvider.cs
- CollectionView.cs
- WebPartTransformerCollection.cs
- DBConnection.cs
- PixelShader.cs
- DataBindingsDialog.cs
- XmlNamespaceMapping.cs
- MsmqOutputChannel.cs
- PrincipalPermission.cs
- XmlUnspecifiedAttribute.cs
- HttpCapabilitiesBase.cs
- CodeMemberField.cs
- DataGridViewUtilities.cs
- StyleXamlTreeBuilder.cs
- HostingPreferredMapPath.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- MediaCommands.cs
- ParseChildrenAsPropertiesAttribute.cs
- AlignmentXValidation.cs
- EnumMemberAttribute.cs