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
- UriTemplateTrieNode.cs
- PagerSettings.cs
- FastEncoderStatics.cs
- HttpModulesInstallComponent.cs
- ConvertersCollection.cs
- StructuredProperty.cs
- DefaultDialogButtons.cs
- TextWriterTraceListener.cs
- FrugalList.cs
- SQLCharsStorage.cs
- ItemAutomationPeer.cs
- SymLanguageVendor.cs
- ScaleTransform.cs
- TakeQueryOptionExpression.cs
- RangeValueProviderWrapper.cs
- PanelDesigner.cs
- ToolStripPanel.cs
- XsltLoader.cs
- StopStoryboard.cs
- BaseAsyncResult.cs
- LinkedResourceCollection.cs
- PlanCompiler.cs
- HeaderPanel.cs
- SafeNativeMethods.cs
- PointCollectionConverter.cs
- SmtpNegotiateAuthenticationModule.cs
- ResourceContainer.cs
- ListItemsPage.cs
- QilDataSource.cs
- TextBounds.cs
- LineGeometry.cs
- BinHexEncoder.cs
- OperatingSystem.cs
- ASCIIEncoding.cs
- XmlDataCollection.cs
- LambdaCompiler.Unary.cs
- EnterpriseServicesHelper.cs
- SiteOfOriginContainer.cs
- XmlILAnnotation.cs
- CustomErrorsSectionWrapper.cs
- DeviceFiltersSection.cs
- EnvelopedSignatureTransform.cs
- FontFamily.cs
- AlternationConverter.cs
- EntitySet.cs
- PeerCredentialElement.cs
- DependentTransaction.cs
- ViewPort3D.cs
- WsatConfiguration.cs
- SafeEventLogWriteHandle.cs
- EntityModelSchemaGenerator.cs
- ViewGenerator.cs
- AddInAdapter.cs
- TraceLevelStore.cs
- FormConverter.cs
- FigureHelper.cs
- BezierSegment.cs
- SourceFilter.cs
- ReachPrintTicketSerializerAsync.cs
- DescendantOverDescendantQuery.cs
- Attributes.cs
- AssemblyFilter.cs
- XPathNavigatorKeyComparer.cs
- NonDualMessageSecurityOverHttpElement.cs
- NetWebProxyFinder.cs
- SocketException.cs
- SchemaImporter.cs
- ParallelTimeline.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- NullReferenceException.cs
- RepeaterDesigner.cs
- XmlSchemaSimpleTypeUnion.cs
- BStrWrapper.cs
- FormatException.cs
- Color.cs
- MoveSizeWinEventHandler.cs
- UTF7Encoding.cs
- PageAsyncTaskManager.cs
- InheritanceService.cs
- SimpleExpression.cs
- ContainerControlDesigner.cs
- BoolExpression.cs
- CompiledQuery.cs
- __Error.cs
- InputBinding.cs
- AttributeUsageAttribute.cs
- HwndSubclass.cs
- OleDbCommand.cs
- OdbcConnectionHandle.cs
- SoapExtensionTypeElement.cs
- UpDownBase.cs
- ToolStripDropDownClosingEventArgs.cs
- BinaryNegotiation.cs
- StylusPointPropertyId.cs
- HtmlForm.cs
- TextRangeSerialization.cs
- FolderBrowserDialog.cs
- ProvideValueServiceProvider.cs
- ResourceKey.cs
- ZipIOCentralDirectoryBlock.cs