using Microsoft.Win32.SafeHandles;
namespace Wickra;
///
/// Owns an opaque native indicator handle and releases it via the indicator's
/// _free function. One generic handle type backs every indicator; the
/// correct free routine is captured at construction time.
///
internal sealed class WickraHandle : SafeHandleZeroOrMinusOneIsInvalid
{
private readonly Action _free;
internal WickraHandle(nint handle, Action free)
: base(ownsHandle: true)
{
_free = free;
SetHandle(handle);
}
protected override bool ReleaseHandle()
{
_free(handle);
return true;
}
}