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
- WindowsScrollBarBits.cs
- RenderData.cs
- DataPager.cs
- Parser.cs
- ValueSerializer.cs
- RefreshPropertiesAttribute.cs
- SiteOfOriginContainer.cs
- HttpModuleActionCollection.cs
- ScriptComponentDescriptor.cs
- XmlSignificantWhitespace.cs
- SemaphoreSecurity.cs
- FileDialog.cs
- TextElementEnumerator.cs
- TransformedBitmap.cs
- DataColumn.cs
- coordinatorfactory.cs
- StateDesigner.cs
- SchemaMapping.cs
- FormCollection.cs
- DesignUtil.cs
- TableCell.cs
- MsmqSecureHashAlgorithm.cs
- UpdateInfo.cs
- DuplicateWaitObjectException.cs
- UserControl.cs
- DisplayInformation.cs
- TextServicesLoader.cs
- Binding.cs
- EditingMode.cs
- DetailsViewCommandEventArgs.cs
- EventWaitHandle.cs
- CipherData.cs
- PartitionerStatic.cs
- DatePicker.cs
- ValidatorCollection.cs
- TextShapeableCharacters.cs
- Profiler.cs
- IgnoreSectionHandler.cs
- BaseTransportHeaders.cs
- RegexCapture.cs
- WindowsTab.cs
- Char.cs
- CollectionViewGroupRoot.cs
- basenumberconverter.cs
- MultiDataTrigger.cs
- LocalizabilityAttribute.cs
- IntersectQueryOperator.cs
- OdbcHandle.cs
- LinkDescriptor.cs
- ImageIndexEditor.cs
- UpdatePanelTriggerCollection.cs
- WebEncodingValidatorAttribute.cs
- DateTimeFormatInfoScanner.cs
- TreeNodeSelectionProcessor.cs
- XmlSchemaChoice.cs
- FactoryMaker.cs
- CreateUserErrorEventArgs.cs
- Scheduler.cs
- RemotingAttributes.cs
- StyleXamlParser.cs
- Label.cs
- DependencyPropertyAttribute.cs
- FlowDocumentPaginator.cs
- XmlSchemaAny.cs
- CommandEventArgs.cs
- XmlUTF8TextWriter.cs
- DataGridViewCheckBoxColumn.cs
- PropertyNames.cs
- MeshGeometry3D.cs
- ListViewGroup.cs
- VersionedStream.cs
- ImageField.cs
- ZipIOExtraFieldElement.cs
- NameObjectCollectionBase.cs
- InitializerFacet.cs
- ScriptingJsonSerializationSection.cs
- InteropBitmapSource.cs
- SmiConnection.cs
- PointUtil.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- SettingsSavedEventArgs.cs
- OSFeature.cs
- XmlSchemaSimpleTypeList.cs
- ProtectedConfiguration.cs
- ToolStripItemImageRenderEventArgs.cs
- SerializableAttribute.cs
- DmlSqlGenerator.cs
- securestring.cs
- WebUtil.cs
- SqlVisitor.cs
- TransportSecurityBindingElement.cs
- TreeViewDesigner.cs
- Util.cs
- ProxyHelper.cs
- HealthMonitoringSection.cs
- DockProviderWrapper.cs
- GenericWebPart.cs
- BrowserInteropHelper.cs
- SerializableReadOnlyDictionary.cs
- ProfileSettingsCollection.cs