Modify Jenkins scripts to enable babysitter script on Cygwin
[mono.git] / mcs / class / referencesource / mscorlib / microsoft / win32 / safehandles / safewaithandle.cs
1 // ==++==
2 // 
3 //   Copyright (c) Microsoft Corporation.  All rights reserved.
4 // 
5 // ==--==
6 /*============================================================
7 **
8 ** Class:  SafeWaitHandle
9 **
10 **
11 ** A wrapper for Win32 events (mutexes, auto reset events, and
12 ** manual reset events).  Used by WaitHandle.
13 **
14 ** 
15 ===========================================================*/
16
17 using System;
18 using System.Security;
19 using System.Security.Permissions;
20 using System.Runtime.InteropServices;
21 using System.Runtime.CompilerServices;
22 using System.Runtime.ConstrainedExecution;
23 using System.Runtime.Versioning;
24 using Microsoft.Win32;
25 using System.Threading;
26
27 namespace Microsoft.Win32.SafeHandles {
28  
29     [System.Security.SecurityCritical]  // auto-generated_required
30     public sealed class SafeWaitHandle : SafeHandleZeroOrMinusOneIsInvalid
31     {
32         // Called by P/Invoke marshaler
33         private SafeWaitHandle() : base(true)
34         {
35         }
36
37         [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
38         public SafeWaitHandle(IntPtr existingHandle, bool ownsHandle) : base(ownsHandle)
39         {
40             SetHandle(existingHandle);
41         }
42
43         [System.Security.SecurityCritical]
44         [ResourceExposure(ResourceScope.Machine)]
45         [ResourceConsumption(ResourceScope.Machine)]
46         override protected bool ReleaseHandle()
47         {
48 #if MONO
49             NativeEventCalls.CloseEvent_internal (handle);
50             return true;
51 #else
52             return Win32Native.CloseHandle(handle);
53 #endif
54         }
55     }
56 }