IConsoleNameSpace2::AddExtension 方法 (mmc.h)

IConsoleNameSpace2::AddExtension 方法使管理单元能够添加扩展管理单元,该管理单元可动态扩展所选项的命名空间。

语法

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

参数

[in] hItem

使用 lpClsid 指定的管理单元进行扩展的项的句柄。

[in] lpClsid

指向管理单元的 CLSID 的指针,它将扩展 由 hItem 指定的项的命名空间。

返回值

此方法可以返回其中一个值。

注解

当管理单元调用 AddExtension 方法时,lpClsid 指定的命名空间扩展仅扩展由 hItem 指定的项的特定实例。 该类型的其他项不受影响:调用 AddExtension 与使用管理单元管理器将扩展添加到管理单元不同。 通过使用管理单元管理器向管理单元添加扩展,该扩展将添加到该类型的管理单元的所有实例。

此外,AddExtension 方法仅适用于进行 AddExtension 调用的管理单元直接拥有的项目。 例如,如果管理单元的命名空间扩展将项添加到其命名空间,则管理单元无法为命名空间扩展提供的项调用 AddExtension,因为该管理单元不拥有该项。

添加动态命名空间扩展的常见位置位于管理单元的 IComponentData 对象的 MMCN_EXPAND 通知处理程序中。

注意 扩展管理单元必须是命名空间扩展。 此外,必须正确设置要扩展的管理单元以及扩展管理单元的 MMC 注册表项。
 
若要动态添加其他类型的扩展 (,例如上下文菜单、工具栏、属性表或任务板) ,管理单元必须将新的剪贴板格式CCF_MMC_DYNAMIC_EXTENSIONS添加到要扩展的项目的数据对象。 CCF_MMC_DYNAMIC_EXTENSIONS格式使用 SMMCDynamicExtensions 结构。 有关详细信息,请参阅 动态非命名空间扩展

如果扩展管理单元仅用作动态扩展,则当管理单元在管理单元管理器的扩展页上的“可以扩展”框中选择主管理单元时,不应在“可用扩展”列表框中列出该扩展管理单元。 若要在管理单元管理器中隐藏扩展,请将密钥“动态扩展”添加到表示要扩展的项的节点类型的键。 然后,将只应动态扩展节点类型的管理单元的 CLSID 作为新键下的值。

示例

下面的代码示例添加 由 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();
}

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 mmc.h
DLL Mmcndmgr.dll

另请参阅

IConsoleNameSpace2