Azoth has several types of plugins. They can provide support for different protocols, allow Azoth to load various resources (like smile packs or chat window styles) or just hook into Azoth core and other plugins.

So, there are currently three types of plugins for Azoth: protocol plugins, resource source plugins and general plugins for everything that isn’t related to the specific types.

Since all these plugins are second-level plugins for Azoth (please refer to Plugins for plugins page if you are not familiar with the concept), they should implement the IPlugin2 to be recognized as such, and should have the following classes in the set returned from IPlugin2::GetPluginClasses():



Of course, one plugin could be of several types, in this case it should implement all the required interfaces and return all the corresponding plugin classes.