Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- CellPartitioner.cs
- StringFunctions.cs
- SimpleWorkerRequest.cs
- GroupBoxRenderer.cs
- ContextMarshalException.cs
- ResourceReferenceKeyNotFoundException.cs
- WithParamAction.cs
- DecimalConstantAttribute.cs
- XslAst.cs
- DataBoundControl.cs
- odbcmetadatacolumnnames.cs
- counter.cs
- ISessionStateStore.cs
- Int32Converter.cs
- StateMachineWorkflow.cs
- ChannelSinkStacks.cs
- CalculatedColumn.cs
- LocalizedNameDescriptionPair.cs
- DetailsViewDeleteEventArgs.cs
- GeneralTransformGroup.cs
- QueryContinueDragEvent.cs
- Semaphore.cs
- SocketInformation.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- FileAuthorizationModule.cs
- RadioButtonAutomationPeer.cs
- _CookieModule.cs
- Size3D.cs
- FocusManager.cs
- RelOps.cs
- Expression.cs
- EdmProperty.cs
- XsltContext.cs
- PriorityQueue.cs
- ItemContainerGenerator.cs
- ImmutableCollection.cs
- RetrieveVirtualItemEventArgs.cs
- SvcMapFile.cs
- ServiceContractViewControl.Designer.cs
- QilChoice.cs
- SystemUdpStatistics.cs
- StorageComplexPropertyMapping.cs
- QilLiteral.cs
- AnonymousIdentificationModule.cs
- Converter.cs
- DataGridSortCommandEventArgs.cs
- SortQuery.cs
- COM2ComponentEditor.cs
- DmlSqlGenerator.cs
- HtmlTableRowCollection.cs
- OleDbErrorCollection.cs
- SHA1CryptoServiceProvider.cs
- BindingMAnagerBase.cs
- BindingExpressionBase.cs
- FillRuleValidation.cs
- PerspectiveCamera.cs
- TextBreakpoint.cs
- _NestedMultipleAsyncResult.cs
- RuleAttributes.cs
- Attribute.cs
- SizeKeyFrameCollection.cs
- XmlHierarchyData.cs
- Range.cs
- KeySplineConverter.cs
- UndirectedGraph.cs
- grammarelement.cs
- CustomBindingCollectionElement.cs
- ContractAdapter.cs
- GreaterThan.cs
- DeclaredTypeElementCollection.cs
- ManifestResourceInfo.cs
- HostedTransportConfigurationManager.cs
- SimpleFieldTemplateUserControl.cs
- Token.cs
- Lease.cs
- ComboBoxRenderer.cs
- HandlerFactoryWrapper.cs
- InputReferenceExpression.cs
- MobileSysDescriptionAttribute.cs
- ObjectDataSourceMethodEventArgs.cs
- SqlUtil.cs
- TargetConverter.cs
- UnaryQueryOperator.cs
- MaterialCollection.cs
- HMACRIPEMD160.cs
- TraceSwitch.cs
- AlignmentYValidation.cs
- LoginDesignerUtil.cs
- Size.cs
- ClientSettings.cs
- sqlstateclientmanager.cs
- TdsParserStaticMethods.cs
- ScaleTransform3D.cs
- TextDecoration.cs
- ADConnectionHelper.cs
- WebPartEditorApplyVerb.cs
- StylusPointPropertyInfoDefaults.cs
- followingquery.cs
- PngBitmapDecoder.cs
- WizardPanel.cs