[This is preliminary documentation and subject to change.]
An object must enumerate the chunks of text in its embeddings. These nested chunks appear to the original caller as chunks of the outer object. There is no operating system support provided for this operation. IFilter implementations are responsible for binding to the IFilter interface of embedded objects. If the current chunk is within an embedding, all GetText and GetValue calls should be passed directly to the embedding's IFilter and the return values from the embedding should be returned to the client. Other calls require some additional work. GetChunk, for example, may require renumbering chunk identifiers to make them unique.
An object can optionally be asked to enumerate the chunks of text 'contained' in its linked objects. As with embedded objects, IFilter implementations are responsible for binding to the IFilter interface of linked objects, then renumbering the chunks of the linked objects so they appear to the original caller as chunks of the outer object. The same rules that apply to an embedding's chunks apply to a link's chunks.
The original source of a chunk (embedding, link, or top-level object) is not exposed by IFilter.