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
- ExceptionTrace.cs
- KeyFrames.cs
- UriExt.cs
- HideDisabledControlAdapter.cs
- HybridCollection.cs
- TypeReference.cs
- DeferrableContent.cs
- PropertyTabAttribute.cs
- FormViewDeleteEventArgs.cs
- RegexFCD.cs
- XPathBinder.cs
- TabControl.cs
- LinqDataSource.cs
- LineSegment.cs
- DataViewSetting.cs
- AsynchronousChannel.cs
- OutOfMemoryException.cs
- SafeCertificateStore.cs
- MsmqDecodeHelper.cs
- XmlTextWriter.cs
- KnownTypes.cs
- URL.cs
- ConfigViewGenerator.cs
- IndexedEnumerable.cs
- DataGridViewElement.cs
- StaticFileHandler.cs
- TemplatedMailWebEventProvider.cs
- ProfileSection.cs
- ChooseAction.cs
- StrokeCollectionConverter.cs
- UIElementParaClient.cs
- MobileResource.cs
- UnionCodeGroup.cs
- ObjectParameter.cs
- DataObjectSettingDataEventArgs.cs
- FormConverter.cs
- KerberosSecurityTokenParameters.cs
- BaseCollection.cs
- Activity.cs
- AlternateViewCollection.cs
- DefaultEventAttribute.cs
- PlacementWorkspace.cs
- ThreadAttributes.cs
- DetailsViewUpdateEventArgs.cs
- HttpServerChannel.cs
- ToolStripItemCollection.cs
- SqlParameter.cs
- PtsCache.cs
- OdbcParameter.cs
- ApplicationException.cs
- LookupBindingPropertiesAttribute.cs
- OdbcErrorCollection.cs
- OdbcConnectionString.cs
- BoundColumn.cs
- FragmentQuery.cs
- WindowAutomationPeer.cs
- ArrayWithOffset.cs
- ProviderConnectionPoint.cs
- ResourceReferenceKeyNotFoundException.cs
- PropertyBuilder.cs
- HtmlInputSubmit.cs
- MultiTrigger.cs
- Identifier.cs
- ToolStripScrollButton.cs
- NullRuntimeConfig.cs
- TerminateDesigner.cs
- ValueType.cs
- XmlSerializableWriter.cs
- XamlVector3DCollectionSerializer.cs
- Pen.cs
- WorkflowRuntimeServiceElement.cs
- ResourceCategoryAttribute.cs
- CopyOfAction.cs
- MimeTextImporter.cs
- CreateUserErrorEventArgs.cs
- ReadWriteObjectLock.cs
- XmlAnyAttributeAttribute.cs
- BitArray.cs
- ProcessStartInfo.cs
- VariableAction.cs
- DataRelationPropertyDescriptor.cs
- MailMessage.cs
- ToolStripStatusLabel.cs
- LogicalCallContext.cs
- InstanceCreationEditor.cs
- IntSumAggregationOperator.cs
- CodeSnippetTypeMember.cs
- CodeArgumentReferenceExpression.cs
- MetafileHeaderWmf.cs
- BooleanExpr.cs
- SafeMemoryMappedFileHandle.cs
- ObjectMaterializedEventArgs.cs
- SchemaTypeEmitter.cs
- LinearQuaternionKeyFrame.cs
- EntitySqlQueryState.cs
- UniqueContractNameValidationBehavior.cs
- FileStream.cs
- XPathAncestorQuery.cs
- TokenCreationParameter.cs
- ReplyChannel.cs