/// <summary> /// Create a Capstone Disassembler. /// </summary> /// <param name="architecture"> /// The disassemble architecture. /// </param> /// <param name="mode"> /// The disassemble mode. /// </param> /// <returns> /// A Capstone handle. /// </returns> /// <exception cref="System.InvalidOperationException"> /// Thrown if a Capstone disassembler could not be created. /// </exception> public static SafeCapstoneHandle Create(DisassembleArchitecture architecture, DisassembleMode mode) { var iArchitecture = (int)architecture; var iMode = (int)mode; var pHandle = IntPtr.Zero; // Open Capstone Handle. // // ... var resultCode = CapstoneImport.Open(iArchitecture, iMode, ref pHandle); if (resultCode != (int)DisassembleErrorCode.Ok) { throw new InvalidOperationException("Unable to create a Capstone disassembler."); } var handle = new SafeCapstoneHandle((UIntPtr)(ulong)(long)pHandle); return(handle); }