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