Функция BindMoniker (objbase.h)

Находит объект с помощью его моникера, активирует объект, если он неактивен, и извлекает указатель на указанный интерфейс для этого объекта.

Синтаксис

HRESULT BindMoniker(
  [in]  LPMONIKER pmk,
  [in]  DWORD     grfOpt,
  [in]  REFIID    iidResult,
  [out] LPVOID    *ppvResult
);

Параметры

[in] pmk

Указатель на моникер объекта. См. раздел IMoniker.

[in] grfOpt

Этот параметр зарезервирован для использования в будущем и должен иметь значение 0.

[in] iidResult

Идентификатор интерфейса, используемый для взаимодействия с объектом .

[out] ppvResult

Адрес переменной указателя, получающей указатель интерфейса, запрошенный в iidResult. После успешного возврата *ppvResult содержит запрошенный указатель интерфейса. Если возникает ошибка, *ppvResult имеет значение NULL. Если вызов выполнен успешно, вызывающий объект отвечает за освобождение указателя с помощью вызова метода IUnknown::Release объекта.

Возвращаемое значение

Эта функция может возвращать следующие коды ошибок или любые значения ошибок, возвращаемые методом IMoniker::BindToObject .

Код возврата Описание
S_OK
Объект был найден и активирован при необходимости, а также возвращен указатель на запрошенный интерфейс.
MK_E_NOOBJECT
Не удалось найти объект моникера.

Комментарии

BindMoniker — это вспомогательная функция, предоставляемая в качестве удобного для клиента, имеющего моникер объекта, для получения указателя на один из интерфейсов этого объекта. BindMoniker упаковывает следующие вызовы:

CreateBindCtx(0, &pbc); 
pmk->BindToObject(pbc, NULL, riid, ppvObj);

CreateBindCtx создает объект контекста привязки, который поддерживает системную реализацию IBindContext. Параметр pmk фактически является указателем на реализацию IMoniker в объекте моникера. Метод BindToObject этой реализации предоставляет указатель на запрошенный указатель интерфейса.

Если у вас есть несколько моникеров для быстрой последовательности и если вы знаете, что эти моникеры активируют один и тот же объект, может быть эффективнее вызвать метод IMoniker::BindToObject напрямую, что позволяет использовать один и тот же объект контекста привязки для всех моникеров. Дополнительные сведения см. в интерфейсе IBindCtx .

Контейнеры приложений, которые позволяют своим документам содержать связанные объекты, являются специальным клиентом, который, как правило, не выполняет прямые вызовы методов IMoniker . Вместо этого клиент управляет связанными объектами через интерфейс IOleLink . Обработчик по умолчанию реализует этот интерфейс и вызывает соответствующие методы IMoniker по мере необходимости.

Требования

Требование Значение
Минимальная версия клиента 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)

См. также раздел

CreateBindCtx

IMoniker::BindToObject