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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ObjectRef.cs
- DataObject.cs
- VisualBasicImportReference.cs
- BindingCompleteEventArgs.cs
- WebPartMovingEventArgs.cs
- ProcessModelInfo.cs
- _WinHttpWebProxyDataBuilder.cs
- Message.cs
- BuildProvider.cs
- Adorner.cs
- HMACSHA1.cs
- DataColumnMappingCollection.cs
- SiteOfOriginContainer.cs
- SerializableAttribute.cs
- RectAnimationBase.cs
- SafeRightsManagementHandle.cs
- CompositeDataBoundControl.cs
- SafeMILHandle.cs
- CheckBoxField.cs
- EndCreateSecurityTokenRequest.cs
- CacheRequest.cs
- DelegatingTypeDescriptionProvider.cs
- Repeater.cs
- ReferentialConstraint.cs
- BamlRecordReader.cs
- MD5Cng.cs
- ColumnResizeUndoUnit.cs
- ProviderUtil.cs
- DataSourceProvider.cs
- RelatedImageListAttribute.cs
- DataPagerFieldCommandEventArgs.cs
- PreDigestedSignedInfo.cs
- SHA384.cs
- SeparatorAutomationPeer.cs
- LassoSelectionBehavior.cs
- ClientSettingsProvider.cs
- ManualResetEvent.cs
- MgmtConfigurationRecord.cs
- ProcessHostMapPath.cs
- GroupBox.cs
- CodeStatementCollection.cs
- AttachedPropertiesService.cs
- TextBreakpoint.cs
- DataControlFieldHeaderCell.cs
- Thickness.cs
- SafeNativeMethodsOther.cs
- DataKeyCollection.cs
- HtmlInputText.cs
- QilParameter.cs
- DataStreams.cs
- Addressing.cs
- DoubleUtil.cs
- HttpCachePolicyBase.cs
- Polygon.cs
- BindingValueChangedEventArgs.cs
- NodeFunctions.cs
- XslAstAnalyzer.cs
- handlecollector.cs
- UrlParameterReader.cs
- ChooseAction.cs
- baseshape.cs
- AutomationEventArgs.cs
- SQLBinaryStorage.cs
- EntityViewGenerator.cs
- TextMetrics.cs
- HasCopySemanticsAttribute.cs
- UpdatePanelTriggerCollection.cs
- EncodingStreamWrapper.cs
- RoutingTable.cs
- UrlMappingCollection.cs
- XpsInterleavingPolicy.cs
- ConstraintManager.cs
- HashAlgorithm.cs
- BindingExpressionUncommonField.cs
- ConditionalAttribute.cs
- MessageAction.cs
- DebuggerService.cs
- HttpHandlersSection.cs
- control.ime.cs
- Point3DValueSerializer.cs
- CapabilitiesRule.cs
- ManualResetEvent.cs
- BitConverter.cs
- PersonalizationProviderCollection.cs
- HttpWebRequest.cs
- _ConnectOverlappedAsyncResult.cs
- CompilationLock.cs
- StateWorkerRequest.cs
- ManagementObject.cs
- AssemblyName.cs
- SQLInt32Storage.cs
- PaginationProgressEventArgs.cs
- PropertyEntry.cs
- DurableErrorHandler.cs
- HelpKeywordAttribute.cs
- ReceiveMessageContent.cs
- BaseCodeDomTreeGenerator.cs
- DatagridviewDisplayedBandsData.cs
- MethodToken.cs
- DependencyPropertyValueSerializer.cs