[This is preliminary documentation and subject to change.]
The IFilterCollection::Add method is the means by which Announcement Listener creates a new instance of a given filter.
Add takes the programmatic identifier (ProgID) of a filter as an argument (for example, BPC.GenericFilter for the generic filter). Using the programmatic identifier (ProgID), Add then looks up the corresponding class identifier (CLSID), and calls CoCreateInstance, which makes a running instance of the object. If the filter is an in-process server, it runs in the process of Announcement Listener.
HRESULT Add(
BSTR ProgID, // in
IBroadcastFilter ** NewFilter, // out
long *plRetVal // out, retval
);
Returns an HRESULT indicating success or failure.