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!

Était-ce utile?

La 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.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top