Condividi tramite


Aggiunta di un nodo di estensione snap-in allegato

Un'estensione snap-in degli allegati deve aggiungersi nel nodo Servizi quando tale nodo viene espanso da un utente.

Quando un utente espande il nodo Servizi in uno degli snap-in Configurazione di sicurezza, MMC usa IComponentData::Notify e il messaggio di notifica MMCN_EXPAND per notificare lo snap-in Configurazione di sicurezza, oltre a tutte le relative estensioni.

Lo snap-in Configurazione di sicurezza estrae quindi il formato interno dall'oggetto lpDataObject, che viene passato dal framework principale MMC come tipo LPDATAOBJECT. Interrompe l'elaborazione quando viene visualizzato il tipo di nodo Servizi. L'estensione snap-in degli allegati estrae quindi il tipo di nodo dall'oggetto lpDataObject. Se il tipo di nodo è uno dei tipi di nodo definiti del servizio, l'estensione snap-in dell'allegato inserisce i nodi radice nel nodo padre specificato.

Si noti che in questo esempio ExtractNodeType è una funzione privata implementata dall'estensione. L'estensione esamina l'oggetto dati per ottenere il tipo di nodo. L'implementazione di ExtractNodeType non viene visualizzata.

//  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.
//  ...