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
- _AuthenticationState.cs
- ContainerFilterService.cs
- KeyboardDevice.cs
- MediaElement.cs
- StreamBodyWriter.cs
- CodeNamespaceCollection.cs
- UiaCoreTypesApi.cs
- DataPagerField.cs
- SchemaInfo.cs
- MaskPropertyEditor.cs
- ServerIdentity.cs
- FragmentNavigationEventArgs.cs
- MulticastIPAddressInformationCollection.cs
- ColumnMapProcessor.cs
- XmlKeywords.cs
- HashCodeCombiner.cs
- Rights.cs
- WinCategoryAttribute.cs
- CorrelationActionMessageFilter.cs
- FixedBufferAttribute.cs
- InputBindingCollection.cs
- FixedFindEngine.cs
- BitmapEffectDrawing.cs
- PersonalizationAdministration.cs
- GeneratedView.cs
- WsatConfiguration.cs
- Matrix.cs
- DragDrop.cs
- TypeLibConverter.cs
- ContractCodeDomInfo.cs
- InstanceOwnerQueryResult.cs
- XpsFilter.cs
- UserControl.cs
- HostProtectionException.cs
- TypographyProperties.cs
- TemplatedMailWebEventProvider.cs
- GeneralTransformGroup.cs
- DisposableCollectionWrapper.cs
- WorkflowItemPresenter.cs
- NullableLongMinMaxAggregationOperator.cs
- FontClient.cs
- documentsequencetextcontainer.cs
- ToolStripSplitButton.cs
- ErrorEventArgs.cs
- TileModeValidation.cs
- ColorConverter.cs
- DataGridTextBoxColumn.cs
- ConfigurationElement.cs
- StylusDevice.cs
- ViewUtilities.cs
- ProcessingInstructionAction.cs
- ThreadNeutralSemaphore.cs
- TableSectionStyle.cs
- Columns.cs
- AdditionalEntityFunctions.cs
- UntrustedRecipientException.cs
- LocatorBase.cs
- Point3DIndependentAnimationStorage.cs
- PositiveTimeSpanValidator.cs
- TabletDeviceInfo.cs
- PasswordTextNavigator.cs
- WinInetCache.cs
- BulletedListEventArgs.cs
- ColorConvertedBitmap.cs
- URLMembershipCondition.cs
- GenericIdentity.cs
- FixedSOMElement.cs
- InputBindingCollection.cs
- TdsParserHelperClasses.cs
- SchemaLookupTable.cs
- TextParagraph.cs
- ManagementInstaller.cs
- complextypematerializer.cs
- XmlReader.cs
- PreviousTrackingServiceAttribute.cs
- WebReferencesBuildProvider.cs
- Opcode.cs
- IpcChannel.cs
- MarginsConverter.cs
- GridSplitter.cs
- TreeNodeMouseHoverEvent.cs
- SignatureDescription.cs
- ButtonField.cs
- DefaultTextStoreTextComposition.cs
- FixedBufferAttribute.cs
- AssemblyAssociatedContentFileAttribute.cs
- XamlTreeBuilder.cs
- DataControlHelper.cs
- ConfigurationManagerInternalFactory.cs
- ApplicationFileCodeDomTreeGenerator.cs
- KnownBoxes.cs
- SamlSecurityTokenAuthenticator.cs
- PropertyPushdownHelper.cs
- StateMachineSubscriptionManager.cs
- DbConnectionPoolIdentity.cs
- FormatPage.cs
- ThreadNeutralSemaphore.cs
- BaseComponentEditor.cs
- QueryCoreOp.cs
- Scheduler.cs