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