Поделиться через


Метод IBindCtx::RegisterObjectBound (objidl.h)

Регистрирует объект в контексте привязки, чтобы гарантировать, что объект остается активным до освобождения контекста привязки.

Синтаксис

HRESULT RegisterObjectBound(
  [in] IUnknown *punk
);

Параметры

[in] punk

Указатель на интерфейс IUnknown объекта, который регистрируется как привязанный.

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

Этот метод может возвращать стандартные возвращаемые значения E_OUTOFMEMORY и S_OK.

Комментарии

Те, кто пишет новый класс моникера (с помощью реализации интерфейса IMoniker ), должны вызывать этот метод всякий раз, когда реализация активирует объект. Чаще всего это происходит в процессе привязки моникера, но это также может произойти при получении отображаемого имени моникера, синтаксическом анализе отображаемого имени в моникер или получении времени последнего изменения объекта.

RegisterObjectBound вызывает AddRef , чтобы создать дополнительную ссылку на объект . Однако необходимо по-прежнему освободить собственную копию указателя. Вызов этого метода дважды для одного и того же объекта создает две ссылки на этот объект. Вы можете освободить ссылку, полученную с помощью вызова этого метода, вызвав IBindCtx::RevokeObjectBound. Все ссылки, хранящиеся в контексте привязки, освобождаются при освобождении самого контекста привязки.

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

IBindCtx не предоставляет метод для получения указателя на объект, зарегистрированный с помощью RegisterObjectBound. Если объект зарегистрирован в таблице выполняющихся объектов, реализации моникера могут вызывать IRunningObjectTable::GetObject для получения указателя на объект.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header objidl.h

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

IBindCtx

IRunningObjectTable::GetObject