Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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); } } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SymbolType.cs
- InternalPermissions.cs
- DoubleConverter.cs
- WhitespaceRuleReader.cs
- PagesSection.cs
- BStrWrapper.cs
- Crypto.cs
- CreateRefExpr.cs
- SingleStorage.cs
- BaseResourcesBuildProvider.cs
- CheckoutException.cs
- WebPartConnectionsConnectVerb.cs
- DataGridViewBindingCompleteEventArgs.cs
- SimpleBitVector32.cs
- OdbcConnectionString.cs
- TypeDescriptor.cs
- SerialStream.cs
- CompatibleComparer.cs
- RefreshPropertiesAttribute.cs
- DebugView.cs
- WorkflowInstanceTerminatedRecord.cs
- DrawingState.cs
- WebRequestModulesSection.cs
- ListSurrogate.cs
- PointCollection.cs
- CriticalFinalizerObject.cs
- MachineKey.cs
- RemoteHelper.cs
- sqlcontext.cs
- NameTable.cs
- DriveNotFoundException.cs
- ParsedAttributeCollection.cs
- OleDbError.cs
- WinFormsUtils.cs
- LineBreak.cs
- CompareInfo.cs
- ListView.cs
- BitArray.cs
- MultiSelectRootGridEntry.cs
- AddValidationError.cs
- ClassicBorderDecorator.cs
- CalendarButtonAutomationPeer.cs
- Clipboard.cs
- WebServicesDescriptionAttribute.cs
- Version.cs
- InputReport.cs
- ProxyWebPartConnectionCollection.cs
- XamlParser.cs
- Publisher.cs
- RootBrowserWindowProxy.cs
- SynchronousReceiveElement.cs
- RealProxy.cs
- PersistChildrenAttribute.cs
- Decorator.cs
- EntityDesignerUtils.cs
- MSG.cs
- SQLUtility.cs
- DurableOperationAttribute.cs
- OrderByExpression.cs
- PathData.cs
- __TransparentProxy.cs
- OracleMonthSpan.cs
- WindowsFormsHelpers.cs
- RunInstallerAttribute.cs
- TriState.cs
- X509Utils.cs
- EntityCommandDefinition.cs
- SqlDataSourceFilteringEventArgs.cs
- FactoryRecord.cs
- EncryptedKey.cs
- DataServiceProviderWrapper.cs
- TableItemPattern.cs
- Set.cs
- HttpRequestTraceRecord.cs
- TemplateBamlRecordReader.cs
- ArgumentOutOfRangeException.cs
- SqlWebEventProvider.cs
- XPathNavigator.cs
- ResourcesBuildProvider.cs
- TypeConverterValueSerializer.cs
- SHA512CryptoServiceProvider.cs
- CharStorage.cs
- EventSetter.cs
- TextContainer.cs
- _LoggingObject.cs
- ContractReference.cs
- propertytag.cs
- TraversalRequest.cs
- TypeElement.cs
- SiteMembershipCondition.cs
- SoapUnknownHeader.cs
- CodeCommentStatementCollection.cs
- CodeDelegateInvokeExpression.cs
- ReaderOutput.cs
- SimpleMailWebEventProvider.cs
- SymLanguageVendor.cs
- UiaCoreApi.cs
- BooleanAnimationUsingKeyFrames.cs
- ToolStripHighContrastRenderer.cs
- ToolboxItemFilterAttribute.cs