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