using Microsoft.Win32.SafeHandles; using System; namespace Gee.External.Capstone { /// /// Native Disassembler Handle. /// internal sealed class NativeDisassemblerHandle : SafeHandleZeroOrMinusOneIsInvalid { /// /// Create a Native Disassembler Handle. /// /// /// A pointer to a disassembler. /// internal NativeDisassemblerHandle(IntPtr pDisassembler) : base(true) { this.handle = pDisassembler; } /// /// Release Handle. /// /// /// A boolean true if the handle was released. A boolean false otherwise. /// protected override bool ReleaseHandle() { var resultCode = NativeCapstoneImport.CloseDisassembler(ref this.handle); var isHandleReleased = resultCode == NativeCapstoneResultCode.Ok; return isHandleReleased; } } }