You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //-----------------------------------------------------------------------------
 | |
| // Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| //-----------------------------------------------------------------------------
 | |
| 
 | |
| namespace System.ServiceModel.Activation.Interop
 | |
| {
 | |
|     using System;
 | |
|     using System.Runtime.ConstrainedExecution;
 | |
|     using System.Runtime.InteropServices;
 | |
|     using System.Runtime.Versioning;
 | |
|     using System.Security;
 | |
|     using Microsoft.Win32.SafeHandles;
 | |
| 
 | |
|     #pragma warning disable 618 // have not moved to the v4 security model yet
 | |
|     [SecurityCritical(SecurityCriticalScope.Everything)]
 | |
|     #pragma warning restore 618
 | |
|     sealed class SafeCloseHandleCritical : SafeHandleZeroOrMinusOneIsInvalid
 | |
|     {
 | |
|         const string KERNEL32 = "kernel32.dll";
 | |
| 
 | |
|         SafeCloseHandleCritical()
 | |
|             : base(true)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         protected override bool ReleaseHandle()
 | |
|         {
 | |
|             return CloseHandle(handle);
 | |
|         }
 | |
| 
 | |
|         [DllImport(KERNEL32, ExactSpelling = true, SetLastError = true)]
 | |
|         [SuppressUnmanagedCodeSecurity]
 | |
|         [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
 | |
|         [ResourceExposure(ResourceScope.None)]
 | |
|         extern static bool CloseHandle(IntPtr handle);
 | |
|     }
 | |
| }
 |