Yes, in xretrace I do it like this
static void update_retrace_line_numbers(dlist & alist)
{
xretrace_item * ip;
VSLINEMARKERINFO info1;
dlist_iterator iter = dlist_begin(alist);
for( ; dlist_iter_valid(iter); dlist_next(iter)) {
ip = dlist_getp(iter);
if (ip->marker_id_valid && (_LineMarkerGet(ip->line_marker_id, info1) == 0)) {
ip->last_line = info1.LineNum;
}
}
}