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
- TraceHandler.cs
- SqlProfileProvider.cs
- PieceDirectory.cs
- SourceLocationProvider.cs
- UnknownBitmapDecoder.cs
- RenderTargetBitmap.cs
- NameValueConfigurationCollection.cs
- ComponentEditorPage.cs
- SchemaTableColumn.cs
- WebPartVerb.cs
- WindowsIdentity.cs
- ParseNumbers.cs
- NativeMethodsOther.cs
- ReadingWritingEntityEventArgs.cs
- DPCustomTypeDescriptor.cs
- SHA256Cng.cs
- Tokenizer.cs
- SinglePhaseEnlistment.cs
- CommandSet.cs
- AttributeUsageAttribute.cs
- CharacterString.cs
- QilInvokeLateBound.cs
- ApplyImportsAction.cs
- ResourceType.cs
- RemoteX509AsymmetricSecurityKey.cs
- mactripleDES.cs
- BidPrivateBase.cs
- DispatcherHooks.cs
- ViewStateModeByIdAttribute.cs
- ItemCheckedEvent.cs
- xsdvalidator.cs
- DateBoldEvent.cs
- precedingsibling.cs
- PrintingPermission.cs
- Location.cs
- HtmlContainerControl.cs
- Matrix3DConverter.cs
- ThemeableAttribute.cs
- Decoder.cs
- Paragraph.cs
- PropertyGrid.cs
- LoadRetryStrategyFactory.cs
- FocusManager.cs
- ProfilePropertyMetadata.cs
- LineGeometry.cs
- SchemaElementLookUpTableEnumerator.cs
- CompilationUnit.cs
- ContextMenuStrip.cs
- AppDomainManager.cs
- BufferedGraphics.cs
- TaskCanceledException.cs
- Schema.cs
- UInt16.cs
- SingleObjectCollection.cs
- MetadataPropertyCollection.cs
- DispatcherExceptionEventArgs.cs
- ListCardsInFileRequest.cs
- NativeCppClassAttribute.cs
- securitycriticaldataformultiplegetandset.cs
- SpeechSeg.cs
- FamilyTypeface.cs
- DiffuseMaterial.cs
- ZipIOExtraFieldPaddingElement.cs
- VariableAction.cs
- TextViewElement.cs
- BinaryParser.cs
- SqlBulkCopyColumnMappingCollection.cs
- UriWriter.cs
- DataGridViewRowHeaderCell.cs
- StatusBarAutomationPeer.cs
- SelectionManager.cs
- ImageConverter.cs
- SqlInfoMessageEvent.cs
- NativeMethodsCLR.cs
- DbConnectionPoolGroupProviderInfo.cs
- BindingsCollection.cs
- ClientConvert.cs
- StorageSetMapping.cs
- TextElement.cs
- BamlResourceSerializer.cs
- coordinatorfactory.cs
- ChildTable.cs
- sqlmetadatafactory.cs
- PromptStyle.cs
- GeneralTransform.cs
- BaseServiceProvider.cs
- IDispatchConstantAttribute.cs
- ErrorTableItemStyle.cs
- DataGridViewBand.cs
- ControlCollection.cs
- BrowserDefinitionCollection.cs
- XmlAnyAttributeAttribute.cs
- DataControlFieldCollection.cs
- SchemaImporter.cs
- ScriptControl.cs
- EventBuilder.cs
- XXXOnTypeBuilderInstantiation.cs
- ClientBuildManager.cs
- DesignerActionMethodItem.cs
- DataGridViewCellStyleChangedEventArgs.cs