Функция 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. Этот объект поддерживает реализацию составного моникера OLE для IMoniker. При успешном выполнении функция вызывает AddRef для моникера, а вызывающий объект отвечает за вызов Release. Если параметр pmkFirst или pmkRest имеет значение NULL, предоставленный указатель имеет значение, отличное от NULL. Если оба значения pmkFirst и pmkRest имеют значение NULL или если возникает ошибка, возвращаемый указатель имеет значение NULL.
Возвращаемое значение
Эта функция может возвращать стандартное возвращаемое значение E_OUTOFMEMORY, а также следующие значения.
Код возврата | Описание |
---|---|
|
Входные моникеры были успешно составлены. |
|
Не удалось создать два моникера из-за ошибки в синтаксисе пути (например, если и pmkFirst, и pmkRest являются моникеры файла на основе абсолютных путей). |
Комментарии
CreateGenericComposite объединяет два моникера в один. Объединяемые классы моникеров могут быть разными, подчиняясь только правилам композиции. Вызывайте эту функцию, только если вы пишете новый класс моникера путем реализации интерфейса IMoniker в реализации IMoniker::ComposeWith , которая включает универсальную возможность композиции.
Поставщики моникеров должны вызывать 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 |
Header | objbase.h |
Библиотека | Ole32.lib |
DLL | Ole32.dll |
Набор API | ext-ms-win-com-ole32-l1-1-5 (появилось в Windows 10 версии 10.0.15063) |