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