using System; using System.Security; using System.Security.Permissions; using Microsoft.Win32.SafeHandles; namespace GreenshotPlugin.UnmanagedHelpers { /// /// A SafeHandle class implementation for the hIcon /// public class SafeIconHandle : SafeHandleZeroOrMinusOneIsInvalid { /// /// Needed for marshalling return values /// [SecurityCritical] public SafeIconHandle() : base(true) { } public SafeIconHandle(IntPtr hIcon) : base(true) { SetHandle(hIcon); } [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)] protected override bool ReleaseHandle() { return User32.DestroyIcon(handle); } } }