Question

I'm using UnDecorateSymbolNameW from dbghelp to un-decorate Microsoft symbol names. When undecorating with UNDNAME_COMPLETE, the symbol name can sometimes have, what I understand to be, some compiler appended information to it. For example a vftable symbol can sometimes have a curly bracket block containing a for keyword followed by a class/interface name, e.g.

SomeClass::'vftable'{for 'Foo::Bar'}

Can anybody inform me as to what the "{for 'Foo::Bar'}" portion of the name means?

Additionally does anybody know of some documentation about this so I can read up as I can't find anything.

Thanks very much!

Was it helpful?

Solution

Your class SomeClass uses multiple inheritance, and it has multiple base classes with virtual methods. Therefore, SomeClass needs multiple vtables (one for each base class with virtual methods). The {for 'Foo::Bar'} tells you which vtable you have. In this case, it is the vtable for the Foo::Bar base class.

(This should have been self-evident from the name.)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top