TSF allows text services to offer optional extension points through the ITfFunctionProvider interface. Indirection through the function provider allows text services to minimize memory usage and startup time by instantiating services when requested, rather than when loaded.
Obtained by QI from ITfTextInputProcessor
Returned from ITfFunctionProvider::GetFunction
Text services that implement ITfFunctionProvider must register the interface with the TSF manager by QueryInterface'ing the ITfThreadMgr object for ITfSourceSingle, and then calling ITfSourceSingle::AdviseSingleSink().
These interfaces are implemented by a text service, and are all optional. These interfaces are returned from a call to ITfFunctionProvider::GetFunction, and all derive from ITfFunction. Note that your text service can implement other functions via ITfFunctionProvider; these are just the predefined interfaces.
When should a text service implement this?
Implement this if your service has a help dialog.
Implement this if your service supports candidates (ITfCandidateList, et. al.)
Implement this if you want to serialize your custom properties.
Implement this if your text service has a configuration dialog.
Think about implementing this if your text service implements ITfLangBarItemBalloon.