// //--------------------------------------------------------------------------- // IDB hooks //--------------------------------------------------------------------------- ssize_t idaapi IDB_Callback(void *ud, int notification_code, va_list va); struct IDB_Hooks : public hooks_base_t { // hookgenIDB:methodsinfo_decl IDB_Hooks(uint32 _flags=0, uint32 _hkcb_flags=HKCB_GLOBAL) : hooks_base_t("ida_idp.IDB_Hooks", IDB_Callback, HT_IDB, _flags, _hkcb_flags) {} bool hook() { return hooks_base_t::hook(); } bool unhook() { return hooks_base_t::unhook(); } #ifdef TESTABLE_BUILD PyObject *dump_state(bool assert_all_reimplemented=false) { return hooks_base_t::dump_state(mappings, mappings_size, assert_all_reimplemented); } #endif // hookgenIDB:methods ssize_t dispatch(int code, va_list va) { switch ( code ) { // hookgenIDB:notifications } return 0; } }; //------------------------------------------------------------------------- PyObject *get_idb_notifier_addr(PyObject *) { return _wrap_addr_in_pycapsule((void *) IDB_Callback); } //------------------------------------------------------------------------- PyObject *get_idb_notifier_ud_addr(IDB_Hooks *hooks) { return _wrap_addr_in_pycapsule(hooks); } // // // hookgenIDB:methodsinfo_def //--------------------------------------------------------------------------- ssize_t idaapi IDB_Callback(void *ud, int code, va_list va) { // hookgenIDB:safecall=IDB_Hooks } //