Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / Microsoft / Win32 / SafeHandles / Win32SafeHandles.cs / 2 / 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 [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 [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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SplayTreeNode.cs
- GatewayDefinition.cs
- VBCodeProvider.cs
- TypeNameConverter.cs
- formatter.cs
- HandoffBehavior.cs
- WebEventTraceProvider.cs
- ApplicationId.cs
- HyperlinkAutomationPeer.cs
- DrawingBrush.cs
- SimpleRecyclingCache.cs
- Application.cs
- SqlDataSourceEnumerator.cs
- CatalogZoneBase.cs
- ExpandCollapseProviderWrapper.cs
- AttributeExtensions.cs
- DataBindingList.cs
- MultiTrigger.cs
- Int32AnimationBase.cs
- TreeViewCancelEvent.cs
- DataSetFieldSchema.cs
- SerializationStore.cs
- WebServiceFault.cs
- ExceptionRoutedEventArgs.cs
- SynchronousReceiveElement.cs
- WeakRefEnumerator.cs
- TextSelectionHighlightLayer.cs
- PersonalizationStateInfo.cs
- TraceSection.cs
- XmlSchemaDatatype.cs
- PictureBoxDesigner.cs
- DataGridViewMethods.cs
- UpdateRecord.cs
- WsatAdminException.cs
- StringFunctions.cs
- StylusDevice.cs
- SqlConnectionHelper.cs
- UrlMappingsModule.cs
- Pair.cs
- ComponentEvent.cs
- WizardSideBarListControlItemEventArgs.cs
- ApplicationFileCodeDomTreeGenerator.cs
- HebrewCalendar.cs
- GreaterThanOrEqual.cs
- OdbcCommandBuilder.cs
- ClientSettings.cs
- HitTestFilterBehavior.cs
- CommandBinding.cs
- ObjectViewFactory.cs
- Style.cs
- QilParameter.cs
- HandleValueEditor.cs
- VolatileEnlistmentMultiplexing.cs
- ErrorProvider.cs
- coordinatorscratchpad.cs
- DocumentGridContextMenu.cs
- RoutingEndpointTrait.cs
- OleDbFactory.cs
- AssemblyBuilderData.cs
- dataobject.cs
- Int64AnimationBase.cs
- NullableDecimalMinMaxAggregationOperator.cs
- FileChangesMonitor.cs
- EntityContainerAssociationSet.cs
- TextWriter.cs
- ImpersonateTokenRef.cs
- StrongNameMembershipCondition.cs
- SoapSchemaExporter.cs
- _NegoState.cs
- _NativeSSPI.cs
- ValueUtilsSmi.cs
- GacUtil.cs
- TextTreeTextBlock.cs
- DbConnectionClosed.cs
- HtmlTableRow.cs
- ListBase.cs
- PresentationTraceSources.cs
- ErrorHandlingReceiver.cs
- SizeAnimationClockResource.cs
- StorageRoot.cs
- GACIdentityPermission.cs
- WindowsIPAddress.cs
- RegexGroupCollection.cs
- SudsParser.cs
- TcpClientChannel.cs
- SqlHelper.cs
- AuthenticationException.cs
- SmtpNtlmAuthenticationModule.cs
- LoginNameDesigner.cs
- DependencyPropertyHelper.cs
- EarlyBoundInfo.cs
- DrawingAttributes.cs
- BaseValidatorDesigner.cs
- HttpPostLocalhostServerProtocol.cs
- FileRecordSequence.cs
- LongValidator.cs
- NamespaceQuery.cs
- _ConnectionGroup.cs
- ComNativeDescriptor.cs
- DataGridViewCellConverter.cs