[This is preliminary documentation and subject to change.]
Three functions are provided with Microsoft Index Server which are sufficient to instantiate the IFilter implementation for use by Microsoft Index Server. These functions are not a full implementation of OLE persistent handlers. The three functions are:
SCODE LoadIFilter( WCHAR const * pwcsPath, IUnknown * pUnkOuter, void ** ppIUnk );
SCODE BindIFilterFromStorage( IStorage * pStg, IUnknown * pUnkOuter, void ** ppIUnk );
SCODE BindIFilterFromStream( IStream * pStm, IUnknown * pUnkOuter, void ** ppIUnk );
Each takes an object or object name (as a path, IStorage, and IStream respectively) plus an optional controlling unknown and return an interface pointer bound to the IFilter interface. The latter two functions are especially useful when binding to the filter of an embedded object.
These functions are declared in the file ntquery.h, and exported from ntquery.lib.