CreateGenericComposite 函数 (objbase.h)
执行两个名字对象的泛型组合,并提供指向生成的复合名字对象的指针。
语法
HRESULT CreateGenericComposite(
[in, optional] LPMONIKER pmkFirst,
[in, optional] LPMONIKER pmkRest,
[out] LPMONIKER *ppmkComposite
);
参数
[in, optional] pmkFirst
指向要组合在 pmkRest 指向的名称对象左侧的名字对象的指针。 可以指向任何类型的名字对象,包括泛型复合对象。
[in, optional] pmkRest
指向要组合在 pmkFirst 指向的名称对象右侧的名称对象的指针。 可以指向与 pmkRest 名字对象类型兼容的任何类型的名字对象,包括泛型复合对象。
[out] ppmkComposite
IMoniker* 指针变量的地址,该变量接收复合名字对象(组合 pmkFirst 和 pmkRest 的结果)的接口指针。 此对象支持 IMoniker 的 OLE 复合名字对象实现。 成功后,函数在名字对象上调用 了 AddRef ,调用方负责调用 Release。 如果 pmkFirst 或 pmkRest 为 NULL,则提供的指针为非 NULL 指针。 如果 pmkFirst 和 pmkRest 均为 NULL,或者如果发生错误,则返回的指针为 NULL。
返回值
此函数可以返回E_OUTOFMEMORY的标准返回值,以及以下值。
返回代码 | 说明 |
---|---|
|
已成功编写输入名字对象。 |
|
由于路径 (语法错误,无法组合这两个名字对象,例如,如果 pmkFirst 和 pmkRest 都是基于) 绝对路径的文件名字对象。 |
注解
CreateGenericComposite 将两个名字对象联接到一个名字对象中。 要联接的名字对象类可能不同,仅受组合规则的约束。 仅当在包含泛型合成功能的 IMoniker::ComposeWith 实现中通过实现 IMoniker 接口编写新的名字对象类时,才调用此函数。
名字对象提供程序应调用 ComposeWith ,将两个名字对象组合在一起。 ComposeWith 的实现应 (,OLE 实现) 尝试先执行非泛型组合(如果类合理),其中将同一类的两个名字对象组合在一起。 如果无法做到这一点,则实现可以调用 CreateGenericComposite 来执行泛型组合,该组合在组合规则内合并了两个不同类的名称对象。 如果编写新的名字对象类,则可以定义新的非泛型组合类型。
在构成这两个名字对象的过程中, CreateGenericComposite 可以简化所有可能。 假设以下示例:pmkFirst 是泛型复合名字对象,A + B + C,pmkRest 是泛型复合名字对象,C -1 + B -1 + Z (其中 C -1 是 C) 的反数。 函数首先编写 C 到 C -1,后者不构成任何内容。 然后,它将 B 和 B -1 组成为无。 最后,它构成 A 到 Z,并提供指向泛型复合名字对象 A + Z 的指针。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | objbase.h |
Library | Ole32.lib |
DLL | Ole32.dll |
API 集 | Windows 10版本 10.0.15063 中引入的 ext-ms-win-com-ole32-l1-1-5 () |