views:

365

answers:

1

Looking through our MMC snap-in code I can't get one concept. We have a tree of different class items inserted into MMC snap-in root node and only two of them register themselves as extensions. These two classes are nothing special compared to any other classes we use to represent the MMC tree items. Yet only these two register themselves in the registry in the NodeTypes key and other classes do not.

The only explanation I have is that we don't need to register them at all - just register the snap-in. However I'm not sure.

What are those extensions snap-ins, how are they used and what exactly do I get after registering some class as an extension snap-in in the registry?

+1  A: 

Did you read this?

Extension snap-ins extend the functionality of other snap-ins, but they are not directly added to a console like stand-alone snap-ins. Extension snap-ins can add context menu items, property pages, toolbar buttons, taskpad tasks, and items to the namespace of the extended snap-in (also called the primary snap-in).

Primary snap-ins can themselves extend the functionality of other snap-ins. That is, the same snap-in code base can create a primary snap-in instance and an extension snap-in instance.

An extension snap-in is loaded only when the snap-in it extends is loaded and the feature it extends is used. For example, when the user displays a context menu in a stand-alone snap-in, MMC builds the context menu, prompts the stand-alone snap-in to add its items, and then prompts the extension snap-in to add its items. After all snap-ins have added their items, MMC displays the context menu and then forwards the menu click to the snap-in that owns the item.

An extension snap-in can extend only the node types that a stand-alone snap-in indicates as being extendable. The extension snap-in declares itself as a subordinate to the extendable node types, and then for each occurrence of those node types in the console, the console automatically adds the related snap-in extensions below it.

It is important to understand that a node type can represent a scope item, a standard list view result item, or a virtual list view result item added by the primary snap-in. Consult the documentation for the primary snap-in to determine what the node type represents and the format of its exported data.

1800 INFORMATION
Yeap, I read that, but I don't get practical implication of this. How does this work? Does this mean that I declare that my snapin extends some other snapin and by MMC magic my snapin starts intercepting some calls to that snapin? How do I determine if I really need this or the strange registration code in our project is just redundant?
sharptooth
I think probably the extent of my answer was the "did you read this" bit - hope you figure it out though. From the looks of things, an primary snapin is the kind you normally add - it is the kind you "add" to mmc manually, while an extension snapin works automagically by adding new features to other snapins.
1800 INFORMATION