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.

Interface

How Obtained

ITfFunctionProvider

Obtained by QI from ITfTextInputProcessor

ITfFunction

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

Standard Functions

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.

Interface

When should a text service implement this?

ITfFnShowHelp

Implement this if your service has a help dialog.

ITfFnReconversion

Implement this if your service supports candidates (ITfCandidateList, et. al.)

ITfFnPropertyUIStatus

Implement this if you want to serialize your custom properties.

ITfFnConfigure

Implement this if your text service has a configuration dialog.

ITfFnBalloon

Think about implementing this if your text service implements ITfLangBarItemBalloon.