Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / Microsoft / Win32 / SafeHandles / Win32SafeHandles.cs / 2 / 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 [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 [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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RSAPKCS1SignatureDeformatter.cs
- XmlSchemaRedefine.cs
- PersonalizationAdministration.cs
- Converter.cs
- TextSpan.cs
- CustomErrorsSection.cs
- XmlSchemaGroupRef.cs
- Helper.cs
- SqlMethodAttribute.cs
- sqlstateclientmanager.cs
- DNS.cs
- TemplateBindingExtension.cs
- BindToObject.cs
- OracleDateTime.cs
- FloatUtil.cs
- Button.cs
- PrintDialogException.cs
- TrackingAnnotationCollection.cs
- ClientScriptItem.cs
- BuildResult.cs
- SqlConnectionStringBuilder.cs
- Int32CAMarshaler.cs
- ConditionalExpression.cs
- AttachedPropertyInfo.cs
- MetadataItem_Static.cs
- FormattedText.cs
- PolicyUnit.cs
- FontStretchConverter.cs
- NameValueCollection.cs
- XmlElementList.cs
- TemplatedMailWebEventProvider.cs
- ColumnCollection.cs
- StreamWithDictionary.cs
- XmlSchemaParticle.cs
- ScrollItemProviderWrapper.cs
- MessageDecoder.cs
- MessageBodyDescription.cs
- EncoderParameter.cs
- WindowsSlider.cs
- Automation.cs
- Peer.cs
- DbConnectionPoolGroupProviderInfo.cs
- IndexOutOfRangeException.cs
- COM2IDispatchConverter.cs
- SqlBulkCopyColumnMappingCollection.cs
- BuildProviderUtils.cs
- HotCommands.cs
- Property.cs
- DataServiceQueryProvider.cs
- DetailsViewRowCollection.cs
- RegexTree.cs
- LineInfo.cs
- Rijndael.cs
- ReferentialConstraint.cs
- DynamicILGenerator.cs
- DispatcherExceptionEventArgs.cs
- MouseActionConverter.cs
- XPathAncestorQuery.cs
- BoolExpr.cs
- AnnotationObservableCollection.cs
- Button.cs
- URIFormatException.cs
- LinkDescriptor.cs
- BuildResult.cs
- EDesignUtil.cs
- TabControlEvent.cs
- SqlCommand.cs
- SimpleWebHandlerParser.cs
- ToolTipService.cs
- AutoResizedEvent.cs
- CodeAttributeArgument.cs
- DataControlFieldCollection.cs
- SiteIdentityPermission.cs
- SQLGuidStorage.cs
- InvokePattern.cs
- DataGridLinkButton.cs
- BitmapPalette.cs
- FieldNameLookup.cs
- NameObjectCollectionBase.cs
- sqlmetadatafactory.cs
- NonVisualControlAttribute.cs
- XmlNamedNodeMap.cs
- GraphicsPath.cs
- WindowsListViewItemCheckBox.cs
- Rect3D.cs
- MouseDevice.cs
- TargetException.cs
- CanonicalFontFamilyReference.cs
- XmlSchemaElement.cs
- CheckBox.cs
- PointF.cs
- DataSourceViewSchemaConverter.cs
- ApplicationServiceManager.cs
- CatalogPartChrome.cs
- BatchServiceHost.cs
- GridViewUpdateEventArgs.cs
- XmlSerializationReader.cs
- XPathNodePointer.cs
- ColumnHeaderCollectionEditor.cs
- IDReferencePropertyAttribute.cs