[This is preliminary documentation and subject to change.]
Every broadcast filter installed in Announcement Listener must be an Automation server supporting the following interfaces: IBroadcastFilter and IPersistStream. A filter supporting the interfaces IGenericFilter and its helper interfaces IFields and IField will be shipped with a future release of the Broadcast Architecture, but other filters are not required to support these interfaces.
Filters must have the normal registry entries for Microsoft® ActiveX® components that share their functionality with other applications (local or in-process). In addition, they must register as supporting the component categories CATID_PersistsToStream and CATID_BpcFilter.
You can write your filter in any language that can implement dual interfaces. Choosing a language involves many considerations: familiarity with the language, tools support, run-time performance, threading models, code complexity, and the size of the compiled code. Languages and products that can be used to write Automation server components include the Microsoft® Visual C++® development system, the Microsoft® Visual Basic® development system, and Java.