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
- _SafeNetHandles.cs
- Material.cs
- SmtpLoginAuthenticationModule.cs
- RelationshipEndCollection.cs
- DataControlFieldsEditor.cs
- ScalarConstant.cs
- MediaCommands.cs
- KnownColorTable.cs
- XmlValueConverter.cs
- ExceptionUtil.cs
- RayMeshGeometry3DHitTestResult.cs
- Misc.cs
- Rect3D.cs
- HandlerMappingMemo.cs
- BitmapSourceSafeMILHandle.cs
- ToolStripDropTargetManager.cs
- CapabilitiesRule.cs
- WebPartMenuStyle.cs
- TrustLevelCollection.cs
- ToolZoneDesigner.cs
- Section.cs
- FacetValues.cs
- DbException.cs
- DataSourceCache.cs
- MembershipSection.cs
- DiscreteKeyFrames.cs
- CornerRadius.cs
- Substitution.cs
- XmlSiteMapProvider.cs
- GregorianCalendar.cs
- CollectionBuilder.cs
- RegisteredScript.cs
- ConstraintEnumerator.cs
- EventProxy.cs
- QueryNode.cs
- TabItemAutomationPeer.cs
- SignerInfo.cs
- StringAttributeCollection.cs
- SafeFileMappingHandle.cs
- PlatformCulture.cs
- ManifestResourceInfo.cs
- IssuedTokenClientBehaviorsElementCollection.cs
- OutputCacheProfileCollection.cs
- XmlTextWriter.cs
- CompiledRegexRunnerFactory.cs
- EventLog.cs
- BulletedList.cs
- DPTypeDescriptorContext.cs
- DataPagerFieldCommandEventArgs.cs
- DataGridViewRowsRemovedEventArgs.cs
- FormParameter.cs
- TitleStyle.cs
- EventTrigger.cs
- ServiceParser.cs
- PerformanceCounterPermission.cs
- TreeNodeBinding.cs
- ObjectItemAssemblyLoader.cs
- EventManager.cs
- BooleanAnimationBase.cs
- BindingBase.cs
- DbProviderFactories.cs
- MultipartContentParser.cs
- ParserContext.cs
- WebMessageEncodingElement.cs
- MD5.cs
- RuntimeArgumentHandle.cs
- SoapMessage.cs
- ImportFileRequest.cs
- COM2PropertyDescriptor.cs
- ColumnWidthChangedEvent.cs
- SplayTreeNode.cs
- WinCategoryAttribute.cs
- ActivityDesigner.cs
- AppDomain.cs
- TextFormatterContext.cs
- CompositeTypefaceMetrics.cs
- DataServiceRequestArgs.cs
- WindowPatternIdentifiers.cs
- TypeKeyValue.cs
- XPathAncestorQuery.cs
- BitArray.cs
- CodeDomConfigurationHandler.cs
- CodeExpressionCollection.cs
- DataPointer.cs
- TargetFrameworkAttribute.cs
- DrawingContext.cs
- LinqDataSourceContextEventArgs.cs
- StrongName.cs
- HtmlTextViewAdapter.cs
- CodeSnippetTypeMember.cs
- FunctionImportElement.cs
- ParagraphVisual.cs
- BitmapEffectDrawing.cs
- Ops.cs
- AssemblyBuilderData.cs
- NetworkCredential.cs
- SlotInfo.cs
- AssemblyBuilder.cs
- JsonFormatGeneratorStatics.cs
- CheckBoxStandardAdapter.cs