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
- LayoutManager.cs
- Paragraph.cs
- CallTemplateAction.cs
- WindowsImpersonationContext.cs
- DataReaderContainer.cs
- EdmProviderManifest.cs
- OutputCacheSettingsSection.cs
- StatusBarPanel.cs
- CustomAssemblyResolver.cs
- NamespaceList.cs
- Icon.cs
- ContentOperations.cs
- Property.cs
- StreamInfo.cs
- RubberbandSelector.cs
- Converter.cs
- DeliveryStrategy.cs
- DirectoryRedirect.cs
- ListView.cs
- GreenMethods.cs
- ThrowHelper.cs
- DbDataRecord.cs
- MdImport.cs
- IdentityHolder.cs
- Activator.cs
- FullTextState.cs
- XmlSchemaValidationException.cs
- SEHException.cs
- ExpressionEditorAttribute.cs
- SynchronizationContext.cs
- TemplateBuilder.cs
- IdentitySection.cs
- ChannelDispatcherCollection.cs
- JavascriptCallbackResponseProperty.cs
- ThrowHelper.cs
- InfoCardSymmetricAlgorithm.cs
- Rectangle.cs
- InvalidWMPVersionException.cs
- Regex.cs
- TableCellAutomationPeer.cs
- ToolStripItemImageRenderEventArgs.cs
- ReadOnlyObservableCollection.cs
- RouteUrlExpressionBuilder.cs
- EnumerableRowCollectionExtensions.cs
- Object.cs
- BypassElementCollection.cs
- EndpointInfoCollection.cs
- WebControlsSection.cs
- FileDialog_Vista.cs
- ComponentRenameEvent.cs
- HttpCapabilitiesSectionHandler.cs
- PrinterSettings.cs
- ContentDefinition.cs
- SessionStateUtil.cs
- TextEncodedRawTextWriter.cs
- DataBindingHandlerAttribute.cs
- CanonicalFontFamilyReference.cs
- ThicknessKeyFrameCollection.cs
- SecurityIdentifierConverter.cs
- DataGridViewRow.cs
- EndPoint.cs
- DLinqDataModelProvider.cs
- IPipelineRuntime.cs
- HasCopySemanticsAttribute.cs
- StrongNameHelpers.cs
- TraceFilter.cs
- SourceFileBuildProvider.cs
- wgx_sdk_version.cs
- XmlChoiceIdentifierAttribute.cs
- CodeTryCatchFinallyStatement.cs
- NamespaceEmitter.cs
- EntityDataSourceWizardForm.cs
- UMPAttributes.cs
- SqlDataSourceCommandParser.cs
- Rect3DConverter.cs
- Hex.cs
- rsa.cs
- InternalCompensate.cs
- DataGridItemEventArgs.cs
- TypeUsageBuilder.cs
- SqlBooleanMismatchVisitor.cs
- CodeEventReferenceExpression.cs
- ByteFacetDescriptionElement.cs
- xmlsaver.cs
- AsymmetricSignatureDeformatter.cs
- ScriptControlDescriptor.cs
- SafeEventLogWriteHandle.cs
- SQLByteStorage.cs
- StringBuilder.cs
- DbConnectionPoolCounters.cs
- Simplifier.cs
- QueryableDataSourceEditData.cs
- DigitShape.cs
- GradientBrush.cs
- StringHandle.cs
- TrackingMemoryStreamFactory.cs
- ChangesetResponse.cs
- HybridCollection.cs
- MediaPlayer.cs
- ContentIterators.cs