Compartir a través de


Método IBindCtx::RegisterObjectBound (objidl.h)

Registra un objeto con el contexto de enlace para asegurarse de que el objeto permanece activo hasta que se libere el contexto de enlace.

Sintaxis

HRESULT RegisterObjectBound(
  [in] IUnknown *punk
);

Parámetros

[in] punk

Puntero a la interfaz IUnknown en el objeto que se está registrando como enlazado.

Valor devuelto

Este método puede devolver los valores devueltos estándar E_OUTOFMEMORY y S_OK.

Comentarios

Los que escriben una nueva clase de moniker (a través de una implementación de la interfaz IMoniker ) deben llamar a este método cada vez que la implementación activa un objeto. Esto sucede con más frecuencia en el transcurso del enlace de un moniker, pero también puede ocurrir al recuperar el nombre para mostrar de un moniker, analizar un nombre para mostrar en un moniker o recuperar la hora en que se modificó por última vez un objeto.

RegisterObjectBound llama a AddRef para crear una referencia adicional al objeto . Sin embargo, debe liberar su propia copia del puntero. Al llamar a este método dos veces para el mismo objeto se crean dos referencias a ese objeto. Puede liberar una referencia obtenida a través de una llamada a este método llamando a IBindCtx::RevokeObjectBound. Todas las referencias que mantiene el contexto de enlace se liberan cuando se libera el propio contexto de enlace.

Llamar a RegisterObjectBound para registrar un objeto con un contexto de enlace mantiene activo el objeto hasta que se libere el contexto de enlace. La reutilización de un contexto de enlace en una operación de enlace posterior (ya sea para otra parte del mismo moniker compuesto o para un moniker diferente) puede hacer que la operación de enlace posterior sea más eficaz porque no tiene que volver a cargar ese objeto. Sin embargo, esto mejora el rendimiento solo si la operación de enlace posterior requiere algunos de los mismos objetos que el original, por lo que debe equilibrar la posible mejora del rendimiento de reutilizar un contexto de enlace con los costos de mantener los objetos activados innecesariamente.

IBindCtx no proporciona un método para recuperar un puntero a un objeto registrado mediante RegisterObjectBound. Suponiendo que el objeto se ha registrado con la tabla de objetos en ejecución, las implementaciones de moniker pueden llamar a IRunningObjectTable::GetObject para recuperar un puntero al objeto.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

IBindCtx

IRunningObjectTable::GetObject