If your text service supports multiple interpretations of the same input, and you wish to allow users to correct the initial interpretation (for dictation, we call this 'correction'; IMEs tend to call it 'reconversion'), your text service will need to implement these interfaces.  Your service will also need to implement ITfFnReconversion (so that applications can get these interfaces), and ITfFunctionProvider (so that applications can get the ITfFnReconversion interface).

Interface

How Obtained

ITfCandidateList

Returned from ITfFnReconversion::GetReconversion

ITfCandidateString

Returned from ITfCandidateList::GetCandidate

IEnumTfCandidates

Returned from ITfCandidateList::EnumCandidates

There is a sample text service that implements candidates available on MSDN.