//----------------------------------------------------------------------------- // 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); } }