An example

Suppose that you want to write a screensaver application. You could define a screensaver interface that allows you to write
addons containing screensaver functionality. Each addon would have a known interface that the application would use to start,
stop, and set options for that particular screensaver. To write such an application, you must perform these general steps with
the Addon Interfaces Library:

Determine the mandatory functionality for the application. For each screensaver addon, you need a function that creates and
populates an options pane. You may also want a function that initializes the addon and another to uninitialize it to restore
any resources acquired during initialization.

Next, you need a function to start and stop the screensaver display. Your interface might look like this:

Your application can use the AOI library to find the available addons (which are loaded DLLs containing the screensavers)
that have this set of interfaces. It can then allow the user to select a screensaver (and options for that screensaver) to use.

A screensaver addon might have user-set preferences. In this case, the addon would have a preferences interface.
The application would display preferences for only those screensavers with a ScreenSaverPrefs interface, which might
look like this: