using System; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; namespace ScreenConnect; public sealed class SafeResourceUpdateHandle : SafeHandleZeroOrMinusOneIsInvalid { private SafeResourceUpdateHandle() : base(ownsHandle: true) { } protected override bool ReleaseHandle() { return EndUpdateResource(handle, fDiscard: true); } public bool CommitChanges() { bool num = EndUpdateResource(handle, fDiscard: false); if (num) { SetHandleAsInvalid(); } return num; } [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool EndUpdateResource(IntPtr hUpdate, bool fDiscard); }