Compartilhar via


Método IConsoleNameSpace2::AddExtension (mmc.h)

O método IConsoleNameSpace2::AddExtension permite que o snap-in adicione um snap-in de extensão que estenda dinamicamente o namespace de um item selecionado.

Sintaxe

HRESULT AddExtension(
  [in] HSCOPEITEM hItem,
  [in] LPCLSID    lpClsid
);

Parâmetros

[in] hItem

Um identificador para o item a ser estendido com o snap-in especificado por lpClsid.

[in] lpClsid

Um ponteiro para o CLSID do snap-in que estenderá o namespace do item especificado por hItem.

Retornar valor

Esse método pode retornar um desses valores.

Comentários

Quando um snap-in chama o método AddExtension, a extensão de namespace especificada por lpClsid estende apenas a instância específica do item especificado por hItem. Outros itens desse tipo não são afetados: chamar AddExtension não é o mesmo que usar o gerenciador de snap-in para adicionar uma extensão a um snap-in. Usando o gerenciador de snap-in para adicionar uma extensão a um snap-in, a extensão é adicionada a todas as instâncias de snap-ins desse tipo.

Além disso, o método AddExtension só funciona para itens que pertencem diretamente ao snap-in que está fazendo a chamada AddExtension. Por exemplo, se um snap-in tiver uma extensão de namespace que adiciona um item ao namespace, o snap-in não poderá chamar AddExtension para o item fornecido pela extensão de namespace porque o snap-in não possui esse item.

Um local comum para adicionar extensões de namespace dinâmico está no manipulador de notificação MMCN_EXPAND do objeto IComponentData do snap-in.

Nota O snap-in de extensão deve ser uma extensão de namespace. Além disso, as entradas do Registro do MMC para que o snap-in seja estendido, bem como o snap-in de extensão, devem ser definidas corretamente.
 
Para adicionar dinamicamente outros tipos de extensões (como menus de contexto, barras de ferramentas, folhas de propriedades ou blocos de tarefas), o snap-in deve adicionar o novo formato de área de transferência CCF_MMC_DYNAMIC_EXTENSIONS ao objeto de dados para os itens que você deseja estender. O formato CCF_MMC_DYNAMIC_EXTENSIONS usa a estrutura SMMCDynamicExtensions . Para obter mais informações, consulte Extensões dinâmicas sem namespace.

Se um snap-in de extensão se destina a ser usado apenas como uma extensão dinâmica, esse snap-in de extensão não deve ser listado na caixa de listagem Extensões Disponíveis quando o snap-in primário é selecionado no Snap-in que pode ser estendido na página de extensões do gerenciador de snap-in. Para ocultar uma extensão no gerenciador de snap-in, adicione a chave "Extensões Dinâmicas" à chave que representa o tipo de nó do item que você deseja estender. Em seguida, coloque os CLSIDs dos snap-ins que só devem estender dinamicamente o tipo de nó como valores sob a nova chave.

Exemplos

O exemplo de código a seguir adiciona o snap-in de extensão especificado por CLSID_Extension:

IConsoleNameSpace2* pExtensions = NULL;
HRESULT hr = m_pConsole->QueryInterface(IID_IConsoleNameSpace2, reinterpret_cast<void**>(&pExtensions));
 
if (SUCCEEDED(hr))
{
    hr = pExtensions->AddExtension(m_pStaticRoot, const_cast<CLSID*>(&CLSID_Extension));
    ASSERT(hr == S_OK);
    pExtensions->Release();
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho mmc.h
DLL Mmcndmgr.dll

Confira também

IConsoleNameSpace2