Partager via


Ajout d’un nœud d’extension de composant logiciel enfichable pièce jointe

Une extension de composant logiciel enfichable pièce jointe doit s’ajouter elle-même sous le nœud Services lorsque ce nœud est développé par un utilisateur.

Lorsqu’un utilisateur développe le nœud Services sous l’un des composants logiciels enfichables Configuration de la sécurité, MMC utilise IComponentData::Notify et le message de notification MMCN_EXPAND pour notifier le composant logiciel enfichable Configuration de la sécurité, ainsi que toutes ses extensions.

Le composant logiciel enfichable Configuration de la sécurité extrait ensuite son format interne de l’objet lpDataObject, qui est transmis à partir de l’infrastructure de main MMC en tant que type LPDATAOBJECT. Il cesse de traiter lorsqu’il voit le type de nœud Services. L’extension de composant logiciel enfichable pièce jointe extrait ensuite le type de nœud de l’objet lpDataObject. Si le type de nœud est l’un des types de nœuds définis par le service, l’extension de composant logiciel enfichable pièce jointe insère ses nœuds racines sous le nœud parent spécifié.

Notez que dans cet exemple, ExtractNodeType est une fonction privée que l’extension implémente. L’extension examine l’objet de données pour obtenir le type de nœud. L’implémentation de ExtractNodeType n’est pas affichée.

//  Detect which extension node to expand.
GUID* nodeType = ExtractNodeType(lpdataObject);

if (NULL == nodeType)
{
  return S_OK;
}

if (TRUE == ::IsEqualGUID(*nodeType, cNodetypeSceTemplateServices))
{
  folderType = ATTACHMENT_STATIC;  // defined by attachment writer
}

else if (TRUE == ::IsEqualGUID
    (*nodeType, cNodetypeSceAnalysisServices))
{
  folderType = ATTACHMENT_STATIC_ANALYSIS;
               // defined by attachment writer
}

//  Free resources.
::GlobalFree(reinterpret_cast<HANDLE>(nodeType));

//  Add service attachment root node and remember it as the
//  root of the SMB extension namespace.
//  ...