diff options
Diffstat (limited to 'src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeWaitHandle.cs')
-rw-r--r-- | src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeWaitHandle.cs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeWaitHandle.cs b/src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeWaitHandle.cs new file mode 100644 index 0000000000..fa24c96718 --- /dev/null +++ b/src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeWaitHandle.cs @@ -0,0 +1,47 @@ +// 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. + +/*============================================================ +** +** +** +** A wrapper for Win32 events (mutexes, auto reset events, and +** manual reset events). Used by WaitHandle. +** +** +===========================================================*/ + +using System; +using System.Security; +using System.Security.Permissions; +using System.Runtime.InteropServices; +using System.Runtime.CompilerServices; +using System.Runtime.ConstrainedExecution; +using System.Runtime.Versioning; +using Microsoft.Win32; +using System.Threading; + +namespace Microsoft.Win32.SafeHandles { + + [System.Security.SecurityCritical] // auto-generated_required + public sealed class SafeWaitHandle : SafeHandleZeroOrMinusOneIsInvalid + { + // Called by P/Invoke marshaler + private SafeWaitHandle() : base(true) + { + } + + [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] + public SafeWaitHandle(IntPtr existingHandle, bool ownsHandle) : base(ownsHandle) + { + SetHandle(existingHandle); + } + + [System.Security.SecurityCritical] + override protected bool ReleaseHandle() + { + return Win32Native.CloseHandle(handle); + } + } +} |