--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Microsoft.Win32.SafeHandles
+{
+ // Class of critical handle which uses only -1 as an invalid handle.
+ public abstract class CriticalHandleMinusOneIsInvalid : CriticalHandle
+ {
+ protected CriticalHandleMinusOneIsInvalid()
+ : base(new IntPtr(-1))
+ {
+ }
+
+ public override bool IsInvalid => handle == new IntPtr(-1);
+ }
+}
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Microsoft.Win32.SafeHandles
+{
+ // Class of critical handle which uses 0 or -1 as an invalid handle.
+ public abstract class CriticalHandleZeroOrMinusOneIsInvalid : CriticalHandle
+ {
+ protected CriticalHandleZeroOrMinusOneIsInvalid()
+ : base(IntPtr.Zero)
+ {
+ }
+
+ public override bool IsInvalid => handle.IsNull() || handle == new IntPtr(-1);
+ }
+}
<Compile Include="$(MSBuildThisFileDirectory)System\UnhandledExceptionEventArgs.cs"/>
<Compile Include="$(MSBuildThisFileDirectory)System\UnhandledExceptionEventHandler.cs"/>
<Compile Include="$(MSBuildThisFileDirectory)System\Void.cs"/>
+ <Compile Include="$(MSBuildThisFileDirectory)Microsoft\Win32\SafeHandles\CriticalHandleMinusOneIsInvalid.cs"/>
+ <Compile Include="$(MSBuildThisFileDirectory)Microsoft\Win32\SafeHandles\CriticalHandleZeroOrMinusOneIsInvalid.cs"/>
</ItemGroup>
<ItemGroup Condition="$(TargetsWindows)">
<Compile Include="$(MSBuildThisFileDirectory)System\IO\FileStream.Win32.cs" Condition="'$(IsProjectNLibrary)' != 'true'"/>
get { return handle == new IntPtr(-1); }
}
}
-
- // Class of critical handle which uses 0 or -1 as an invalid handle.
- public abstract class CriticalHandleZeroOrMinusOneIsInvalid : CriticalHandle
- {
- 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.
- public abstract class CriticalHandleMinusOneIsInvalid : CriticalHandle
- {
- protected CriticalHandleMinusOneIsInvalid() : base(new IntPtr(-1))
- {
- }
-
- public override bool IsInvalid
- {
- get { return handle == new IntPtr(-1); }
- }
- }
}