Partilhar via


Adicionando um nó de extensão snap-in de anexo

Uma extensão de snap-in de anexo deve se adicionar no nó Serviços quando esse nó for expandido por um usuário.

Quando um usuário expande o nó Serviços em um dos snap-ins de Configuração de Segurança, o MMC usa IComponentData::Notify e a mensagem de notificação MMCN_EXPAND para notificar o snap-in configuração de segurança, além de todas as suas extensões.

Em seguida, o snap-in configuração de segurança extrai seu formato interno do lpDataObject, que é passado da estrutura de main do MMC como o tipo LPDATAOBJECT. Ele interrompe o processamento quando vê o tipo de nó Serviços. Em seguida, a extensão de snap-in de anexo extrai o tipo de nó do lpDataObject. Se o tipo de nó for um dos tipos de nó definidos do serviço, a extensão de snap-in de anexo inserirá seus nós raiz no nó pai especificado.

Observe que, neste exemplo, ExtractNodeType, é uma função privada que a extensão implementa. A extensão examina o objeto de dados para obter o tipo de nó. A implementação de ExtractNodeType não é mostrada.

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