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
- WsatProxy.cs
- JoinSymbol.cs
- HandlerMappingMemo.cs
- SendMailErrorEventArgs.cs
- SqlClientWrapperSmiStreamChars.cs
- LinqDataSourceDisposeEventArgs.cs
- OdbcConnectionString.cs
- GridViewRowEventArgs.cs
- FragmentQueryProcessor.cs
- DataStreams.cs
- ResumeStoryboard.cs
- ComponentEditorPage.cs
- PolyLineSegment.cs
- TypeBuilder.cs
- ColorPalette.cs
- StateDesignerConnector.cs
- loginstatus.cs
- EntityUtil.cs
- DebugView.cs
- Mutex.cs
- RecognizerInfo.cs
- ErrorFormatterPage.cs
- _NativeSSPI.cs
- SessionStateUtil.cs
- GatewayDefinition.cs
- UrlMappingsModule.cs
- ToolStripOverflowButton.cs
- LineServicesRun.cs
- DataGridViewCellValidatingEventArgs.cs
- ParameterBinding.cs
- Pen.cs
- DataSourceXmlSerializationAttribute.cs
- ModulesEntry.cs
- WindowsFont.cs
- RetriableClipboard.cs
- TableLayoutColumnStyleCollection.cs
- Panel.cs
- PriorityQueue.cs
- SortDescriptionCollection.cs
- TargetException.cs
- TableLayoutSettings.cs
- Psha1DerivedKeyGenerator.cs
- TemplatedEditableDesignerRegion.cs
- DocumentGrid.cs
- EastAsianLunisolarCalendar.cs
- SqlNodeAnnotations.cs
- QuaternionRotation3D.cs
- _RegBlobWebProxyDataBuilder.cs
- DateTime.cs
- TextServicesLoader.cs
- dataprotectionpermission.cs
- WmlObjectListAdapter.cs
- ContainerUIElement3D.cs
- GridView.cs
- RowToParametersTransformer.cs
- ParserExtension.cs
- WasEndpointConfigContainer.cs
- ToolboxBitmapAttribute.cs
- SvcMapFileLoader.cs
- wgx_commands.cs
- Rijndael.cs
- ExtensibleClassFactory.cs
- MethodRental.cs
- DateTimeStorage.cs
- QueryContinueDragEvent.cs
- DesignTimeSiteMapProvider.cs
- EventLevel.cs
- DataPagerCommandEventArgs.cs
- ApplicationCommands.cs
- Dispatcher.cs
- BooleanExpr.cs
- login.cs
- ErrorFormatterPage.cs
- TypeLoadException.cs
- SqlStream.cs
- ConstraintCollection.cs
- StrongNameSignatureInformation.cs
- Utilities.cs
- BaseInfoTable.cs
- ListViewGroupItemCollection.cs
- XmlSchemaProviderAttribute.cs
- RequestContextBase.cs
- ClickablePoint.cs
- WindowsListBox.cs
- PrintPreviewControl.cs
- CodeStatementCollection.cs
- XPathDocumentBuilder.cs
- Baml2006KeyRecord.cs
- StateManagedCollection.cs
- ValidationSummary.cs
- Thickness.cs
- FrameworkPropertyMetadata.cs
- MonitoringDescriptionAttribute.cs
- ArgIterator.cs
- SizeChangedEventArgs.cs
- SizeFConverter.cs
- MapPathBasedVirtualPathProvider.cs
- WindowsListBox.cs
- JapaneseLunisolarCalendar.cs
- IndentedTextWriter.cs