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
- PackagePartCollection.cs
- ConnectionPointCookie.cs
- TextEditorMouse.cs
- Tablet.cs
- SystemThemeKey.cs
- DataSourceSelectArguments.cs
- TypeUnloadedException.cs
- SizeLimitedCache.cs
- UxThemeWrapper.cs
- Assembly.cs
- DummyDataSource.cs
- ByteRangeDownloader.cs
- WebPartVerbsEventArgs.cs
- InputLanguageSource.cs
- ResXBuildProvider.cs
- WindowsEditBoxRange.cs
- WebControlParameterProxy.cs
- ItemContainerGenerator.cs
- PointValueSerializer.cs
- XmlNodeChangedEventManager.cs
- DbgUtil.cs
- KeyGesture.cs
- FixedTextBuilder.cs
- XmlSchema.cs
- RowToFieldTransformer.cs
- ISFTagAndGuidCache.cs
- TextTreeRootTextBlock.cs
- SmiSettersStream.cs
- QualifierSet.cs
- BasicKeyConstraint.cs
- Int32EqualityComparer.cs
- BamlBinaryReader.cs
- ClassHandlersStore.cs
- DbReferenceCollection.cs
- TransformedBitmap.cs
- CodeMemberEvent.cs
- FutureFactory.cs
- Clock.cs
- XMLSyntaxException.cs
- Bits.cs
- LayoutEvent.cs
- AuthenticationServiceManager.cs
- RayMeshGeometry3DHitTestResult.cs
- OperatorExpressions.cs
- SessionStateModule.cs
- LinqDataSourceValidationException.cs
- CharacterMetrics.cs
- ConcurrencyMode.cs
- CodeParameterDeclarationExpressionCollection.cs
- ScriptReference.cs
- DateTimeSerializationSection.cs
- DescendentsWalkerBase.cs
- PersonalizationState.cs
- ColumnMap.cs
- ReflectTypeDescriptionProvider.cs
- TextSpan.cs
- FileDataSourceCache.cs
- ImageAnimator.cs
- TimelineCollection.cs
- WSUtilitySpecificationVersion.cs
- WebPartUtil.cs
- CodeBlockBuilder.cs
- InkCanvas.cs
- SQLInt64.cs
- Int32AnimationUsingKeyFrames.cs
- TransformedBitmap.cs
- XmlSchemaDocumentation.cs
- DispatchWrapper.cs
- FactoryGenerator.cs
- SerializationUtilities.cs
- SchemaTableOptionalColumn.cs
- NavigationCommands.cs
- GroupBox.cs
- DataSourceHelper.cs
- DecoderReplacementFallback.cs
- ResourceBinder.cs
- ToolStripItemRenderEventArgs.cs
- InternalBufferManager.cs
- PointLightBase.cs
- ResetableIterator.cs
- MenuAdapter.cs
- PointCollectionConverter.cs
- SqlProviderManifest.cs
- SelectionUIHandler.cs
- OracleDateTime.cs
- PolicyManager.cs
- FloaterParaClient.cs
- PeerNameRecord.cs
- Rule.cs
- SoapEnvelopeProcessingElement.cs
- SqlClientWrapperSmiStreamChars.cs
- SettingsPropertyIsReadOnlyException.cs
- ProcessRequestArgs.cs
- EnumValidator.cs
- SafeNativeMethods.cs
- DropShadowBitmapEffect.cs
- DPAPIProtectedConfigurationProvider.cs
- Evidence.cs
- ExpanderAutomationPeer.cs
- DbProviderFactory.cs