Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / Microsoft / Win32 / SafeHandles / Win32SafeHandles.cs / 1305376 / 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). // // namespace Microsoft.Win32.SafeHandles { using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Security.Permissions; using System.Runtime.ConstrainedExecution; // Class of safe handle which uses 0 or -1 as an invalid handle. [System.Security.SecurityCritical] // auto-generated_required [SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)] public abstract class SafeHandleZeroOrMinusOneIsInvalid : SafeHandle { [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] protected SafeHandleZeroOrMinusOneIsInvalid(bool ownsHandle) : base(IntPtr.Zero, ownsHandle) { } #if FEATURE_CORECLR // A default constructor is needed to satisfy CoreCLR inheritence rules. It should not be called at runtime protected SafeHandleZeroOrMinusOneIsInvalid() { throw new NotImplementedException(); } #endif // FEATURE_CORECLR public override bool IsInvalid { [System.Security.SecurityCritical] get { return handle.IsNull() || handle == new IntPtr(-1); } } } // Class of safe handle which uses only -1 as an invalid handle. [System.Security.SecurityCritical] // auto-generated_required [SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)] public abstract class SafeHandleMinusOneIsInvalid : SafeHandle { [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] protected SafeHandleMinusOneIsInvalid(bool ownsHandle) : base(new IntPtr(-1), ownsHandle) { } #if FEATURE_CORECLR // A default constructor is needed to satisfy CoreCLR inheritence rules. It should not be called at runtime protected SafeHandleMinusOneIsInvalid() { throw new NotImplementedException(); } #endif // FEATURE_CORECLR public override bool IsInvalid { [System.Security.SecurityCritical] get { return handle == new IntPtr(-1); } } } // Class of critical handle which uses 0 or -1 as an invalid handle. [System.Security.SecurityCritical] // auto-generated_required [SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)] public abstract class CriticalHandleZeroOrMinusOneIsInvalid : CriticalHandle { [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] protected CriticalHandleZeroOrMinusOneIsInvalid() : base(IntPtr.Zero) { } public override bool IsInvalid { [System.Security.SecurityCritical] get { return handle.IsNull() || handle == new IntPtr(-1); } } } // Class of critical handle which uses only -1 as an invalid handle. [System.Security.SecurityCritical] // auto-generated_required [SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)] public abstract class CriticalHandleMinusOneIsInvalid : CriticalHandle { [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] protected CriticalHandleMinusOneIsInvalid() : base(new IntPtr(-1)) { } public override bool IsInvalid { [System.Security.SecurityCritical] 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
- DecoderBestFitFallback.cs
- HttpClientProtocol.cs
- ExtensibleClassFactory.cs
- DoubleAnimationClockResource.cs
- Oid.cs
- SchemaMerger.cs
- SystemException.cs
- BasicKeyConstraint.cs
- RegexGroupCollection.cs
- XmlnsPrefixAttribute.cs
- PropertyChangeTracker.cs
- BaseHashHelper.cs
- HwndSubclass.cs
- MdImport.cs
- ProxyDataContractResolver.cs
- NameScopePropertyAttribute.cs
- Activity.cs
- AutoScrollExpandMessageFilter.cs
- ProxyWebPartManager.cs
- NGCUIElementCollectionSerializerAsync.cs
- ToolTipAutomationPeer.cs
- UnsafeNetInfoNativeMethods.cs
- IDReferencePropertyAttribute.cs
- MaskInputRejectedEventArgs.cs
- OperatingSystem.cs
- ErrorHandlerModule.cs
- SystemIPInterfaceProperties.cs
- VirtualPath.cs
- CodeGenerator.cs
- AddingNewEventArgs.cs
- XmlSchemaSimpleTypeRestriction.cs
- TraceUtils.cs
- XmlSerializationReader.cs
- CompositeScriptReferenceEventArgs.cs
- xdrvalidator.cs
- FormViewInsertEventArgs.cs
- SqlErrorCollection.cs
- DependencyObject.cs
- Wizard.cs
- StoreContentChangedEventArgs.cs
- PagesSection.cs
- ExpressionBuilderCollection.cs
- SectionVisual.cs
- SqlGatherConsumedAliases.cs
- CqlWriter.cs
- Keywords.cs
- NaturalLanguageHyphenator.cs
- OrderByQueryOptionExpression.cs
- WebHttpSecurityElement.cs
- EmptyStringExpandableObjectConverter.cs
- WebServiceTypeData.cs
- ViewBase.cs
- SafeCryptHandles.cs
- VarRemapper.cs
- HierarchicalDataSourceConverter.cs
- XPathNavigatorKeyComparer.cs
- PenCursorManager.cs
- WriteFileContext.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- OverflowException.cs
- ListControlConvertEventArgs.cs
- Base64Stream.cs
- HttpErrorTraceRecord.cs
- BindToObject.cs
- NumberFormatter.cs
- AddInActivator.cs
- SecurityTokenProvider.cs
- XmlSchema.cs
- ObjectPersistData.cs
- DataPagerFieldCollection.cs
- WebReference.cs
- SqlCommand.cs
- ArgumentsParser.cs
- RelationshipEndCollection.cs
- NonSerializedAttribute.cs
- DebugView.cs
- DataGridViewUtilities.cs
- ComponentDispatcherThread.cs
- EventPrivateKey.cs
- ObjectListFieldCollection.cs
- ControlPaint.cs
- MemberMemberBinding.cs
- DynamicDataRouteHandler.cs
- GroupBoxRenderer.cs
- Boolean.cs
- NodeLabelEditEvent.cs
- GuidelineCollection.cs
- MemberCollection.cs
- StateMachineWorkflowInstance.cs
- RequestCachePolicyConverter.cs
- GridViewAutoFormat.cs
- CompoundFileStorageReference.cs
- tibetanshape.cs
- XmlSerializer.cs
- RemotingServices.cs
- ContextQuery.cs
- SystemNetworkInterface.cs
- ClientCultureInfo.cs
- XpsPartBase.cs
- InvokeFunc.cs