Before you set up dynamic filtering, you must:
if (ThreadCtl(_NTO_TCTL_IO, 0)!=EOK) { fprintf(stderr, "argv[0]: Failed to obtain I/O privileges\n"); return (-1); }
Then call TraceEvent() with one of these commands:
TraceEvent(_NTO_TRACE_ADDCLASSEVHANDLER, class, int (*event_hdlr)(event_data_t*), event_data_t* data_struct);
TraceEvent(_NTO_TRACE_ADDEVENTHANDLER, class, event, int (*event_hdlr)(event_data_t*), event_data_t* data_struct);
The additional arguments are:
int event_hdlr (event_data_t *event_data);