Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // 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); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- COSERVERINFO.cs
- HandleCollector.cs
- _UriTypeConverter.cs
- ProfileModule.cs
- DirectoryNotFoundException.cs
- GradientBrush.cs
- OdbcTransaction.cs
- XmlLinkedNode.cs
- ByteStorage.cs
- ObfuscateAssemblyAttribute.cs
- SmiTypedGetterSetter.cs
- XmlSchemaCollection.cs
- BitStack.cs
- FormsAuthenticationConfiguration.cs
- IndexExpression.cs
- GridViewDeletedEventArgs.cs
- PersistChildrenAttribute.cs
- TableDetailsCollection.cs
- EventLogRecord.cs
- GeometryGroup.cs
- SystemWebExtensionsSectionGroup.cs
- PathFigureCollection.cs
- CopyNodeSetAction.cs
- _ListenerAsyncResult.cs
- AppDomain.cs
- SiteMapNode.cs
- ZoomPercentageConverter.cs
- XmlSchemaFacet.cs
- CookieHandler.cs
- RawStylusInputCustomDataList.cs
- CompositeFontParser.cs
- ResourcePermissionBase.cs
- SplitterPanel.cs
- ContourSegment.cs
- xdrvalidator.cs
- Triplet.cs
- SqlConnectionPoolGroupProviderInfo.cs
- SmiXetterAccessMap.cs
- QuadraticBezierSegment.cs
- MatrixTransform.cs
- SchemaImporterExtensionsSection.cs
- unsafenativemethodsother.cs
- ToolBarPanel.cs
- ReferenceEqualityComparer.cs
- ResourceAssociationType.cs
- StateItem.cs
- ActivityCodeDomSerializer.cs
- InProcStateClientManager.cs
- ProcessHostServerConfig.cs
- DataGridViewCellStateChangedEventArgs.cs
- PanelDesigner.cs
- ButtonChrome.cs
- FillErrorEventArgs.cs
- RegexCompilationInfo.cs
- ProfilePropertyMetadata.cs
- UntypedNullExpression.cs
- DataGridLengthConverter.cs
- SimpleColumnProvider.cs
- MissingMemberException.cs
- Column.cs
- Invariant.cs
- NumberSubstitution.cs
- ConnectionPointCookie.cs
- SqlWorkflowPersistenceService.cs
- BamlLocalizer.cs
- GraphicsPath.cs
- TreeNode.cs
- QueryOperatorEnumerator.cs
- CTreeGenerator.cs
- RSAOAEPKeyExchangeDeformatter.cs
- AttachedPropertyInfo.cs
- PrinterUnitConvert.cs
- TypefaceMap.cs
- DesignerOptions.cs
- DataContractAttribute.cs
- QueryReaderSettings.cs
- AttributeQuery.cs
- Mapping.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- UnhandledExceptionEventArgs.cs
- ColumnMapTranslator.cs
- LowerCaseStringConverter.cs
- ReadWriteObjectLock.cs
- TemplateBindingExtensionConverter.cs
- MediaScriptCommandRoutedEventArgs.cs
- StorageEntityContainerMapping.cs
- ChangePassword.cs
- WindowsTab.cs
- IResourceProvider.cs
- CommentEmitter.cs
- GridItemProviderWrapper.cs
- StrongTypingException.cs
- LocationReference.cs
- TextHidden.cs
- XmlStringTable.cs
- hebrewshape.cs
- _UncName.cs
- StyleHelper.cs
- DbParameterCollection.cs
- LogEntrySerializer.cs