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