MCPcopy Create free account
hub / github.com/KasperskyLab/hrtng / mgr_callback

Function mgr_callback

src/MicrocodeExplorer.cpp:447–500  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

445};
446
447static ssize_t idaapi mgr_callback(void *ud, int code, va_list va)
448{
449 MicrocodeGraphContainer *gcont = (MicrocodeGraphContainer *)ud;
450 mbl_array_t *mba = *gcont->m_MBA;
451 bool result = false;
452
453 switch (code)
454 {
455#if IDA_SDK_VERSION < 760
456 case grcode_user_gentext:
457 result = true;
458 break;
459#endif // IDA_SDK_VERSION < 760
460
461 // refresh user-defined graph nodes and edges
462 case grcode_user_refresh:
463 // in: interactive_graph_t *g
464 // out: success
465 {
466 interactive_graph_t*mg = va_arg(va, interactive_graph_t*);
467
468 // we have to resize
469 mg->resize(mba->qty);
470
471 for (int i = 0; i < mba->qty; ++i)
472 for (auto dst : mba->get_mblock(i)->succset)
473 mg->add_edge(i, dst, NULL);
474
475 result = true;
476 }
477 break;
478
479 // retrieve text for user-defined graph node
480 case grcode_user_text:
481 //interactive_graph_t *g
482 // int node
483 // const char **result
484 // bgcolor_t *bg_color (maybe NULL)
485 // out: must return 0, result must be filled
486 // NB: do not use anything calling GDI!
487 {
488 va_arg(va, interactive_graph_t*);
489 int node = va_arg(va, int);
490 const char **text = va_arg(va, const char **);
491
492 gcont->m_MQD.qStr.clear();
493 mba->get_mblock(node)->print(gcont->m_MQD);
494 *text = gcont->m_MQD.qStr.begin();
495 result = true;
496 }
497 break;
498 }
499 return (int)result;
500}
501
502static void cv_jump(sample_info_t* si)
503{

Callers

nothing calls this directly

Calls 3

printMethod · 0.80
beginMethod · 0.80
clearMethod · 0.45

Tested by

no test coverage detected