Microsoft plans to define the following modes of extensibility for Snap-Ins. Every Snap-In must provide at least one of the following types of functionality.
Mechanism |
Type |
Description |
Namespace Enumeration |
Per Node |
Partakes in the enumeration of the elements within a container. Multiple Snap-Ins can register to extend behavior in this way for a given node. |
Context Menu Extension |
Per Node |
Adds items to the context menu of a given node or object. Multiple Snap-Ins can register to extend behavior in this way for a given node. |
CREATE NEW menu Extension |
Per Node |
Adds items to the CREATE NEW menu structure on the context menu of a given node or object. Multiple Snap-Ins can register to extend behavior in this way for a given node. |
TASKS Menu Extension |
Per Node |
Adds items to the TASKS menu structure on the context menu of a given node or object. Multiple Snap-Ins can register to extend behavior in this way for a given node. |
Generalized OLE2 Style Menu Merging |
Per Result Pane |
Based on the OLE2 offering. When a control or DocObject is present in the result pane it can negotiate for menus via the standard OLE2 menu merging interfaces. |
Toolbar and Toolbar Buttons Extension |
Per View |
Adds an entire toolbar to the window hosting the node extended by the Snap-In. Multiple Snap-Ins can register to extend behavior in this way for a given node. |
Property Page Extension |
Per Node |
Adds one or more property sheets to a Property page. Multiple Snap-Ins can register to extend behavior in this way for a given node. Note: Property sheets are of a fixed size |
Wizard Chaining |
Per Node |
Adds one or more wizard pages to a Wizard frame. Multiple Snap-Ins can register to extend behavior in this way for a given node. Note: Wizard pages are of a fixed size |
Help Extension |
TBD |
TBD |
In all cases, the Snap-In has the option of altering the returned enumeration based on the context information passed to it at Open time. This permits Snap-Ins to register as an extension and offer conditional behavior. For example, the MyComputer context menu can choose to offer "Open Control Panel" only when it determines that it is being asked to open the control panel on a local machine (because the control panel is not remoteable).
Other than the CREATE NEW and TASKS menu extensions, all others are general user interface extension mechanisms. The CREATE NEW and TASKS menu extensions are used as a mechanism to group operations is a way to permit integrated, task-oriented command structures. Had the console offered only a generic menu extension interface, there would be little consistency in the usage model. In MMC each node will have a Create New menu and a Tasks menu. Through this extension registration mechanism, all of these menu items and corresponding functionality are collected into a single UI point of usage.