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

Asocia un objeto a una clave de cadena en la tabla de punteros con clave de cadena del contexto de enlace.

Sintaxis

HRESULT RegisterObjectParam(
  [in] LPOLESTR pszKey,
  [in] IUnknown *punk
);

Parámetros

[in] pszKey

Clave de cadena de contexto de enlace con la que se está registrando el objeto. La comparación de cadenas clave distingue mayúsculas de minúsculas.

[in] punk

Puntero a la interfaz IUnknown del objeto que se va a registrar.

El método llama a AddRef en el puntero.

Valor devuelto

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

Comentarios

Un contexto de enlace mantiene una tabla de punteros de interfaz, cada uno asociado a una clave de cadena. Esto permite la comunicación entre una implementación de moniker y el autor de la llamada que inició la operación de enlace. Una entidad puede almacenar un puntero de interfaz bajo una cadena conocida para ambas partes para que la otra parte pueda recuperarla posteriormente del contexto de enlace.

Las operaciones de enlace posteriores al uso de este método pueden usar IBindCtx::GetObjectParam para recuperar el puntero almacenado.

Notas a los autores de llamadas

RegisterObjectParam es útil para aquellos que implementan una nueva clase de moniker (mediante una implementación de IMoniker) y para los clientes de moniker (aquellos que usan monikers para enlazar a objetos).

Al implementar una nueva clase de moniker, se llama a este método cuando se produce un error durante el enlace de moniker para informar al autor de la llamada de la causa del error. La clave que obtendría con una llamada a este método dependerá de la condición de error. A continuación se muestra una lista de errores comunes de enlace de moniker, que describen para cada una de las claves que serían adecuadas:

  • MK_E_EXCEEDEDDEADLINE: si una operación de enlace supera su fecha límite porque un objeto determinado no se está ejecutando, debe registrar el moniker del objeto con la primera clave sin usar de la lista: "ExceededDeadline", "ExceededDeadline1", "ExceededDeadline2", etc. Si el autor de la llamada encuentra más adelante el moniker en la tabla de objetos en ejecución, el autor de la llamada puede reintentar la operación de enlace.
  • MK_E_CONNECTMANUALLY: la clave "ConnectManually" indica un moniker cuyo enlace requiere ayuda del usuario final. Para solicitar que el usuario final se conecte manualmente al objeto, el autor de la llamada puede reintentar la operación de enlace después de mostrar el nombre para mostrar del moniker. Los motivos comunes de este error son que se necesita una contraseña o que es necesario montar un disquete.
  • E_CLASSNOTFOUND: la clave "ClassNotFound" indica un moniker cuya clase no se encontró. (No se pudo encontrar el servidor para el objeto identificado por este moniker). Si esta clave se usa para un objeto de documento compuesto OLE, el autor de la llamada puede usar IMoniker::BindToStorage para enlazar con el objeto y, a continuación, intentar llevar a cabo una operación Tratar como... o Convertir en... para asociar el objeto a otro servidor. Si esto se realiza correctamente, el autor de la llamada puede reintentar la operación de enlace.
Un cliente de moniker con conocimientos detallados de la implementación del moniker también puede llamar a este método para pasar información privada a esa implementación.

Puede definir nuevas cadenas como claves para almacenar punteros. Por convención, debe usar nombres de clave que comiencen con el formato de cadena del CLSID de la clase de moniker. (Consulte la función StringFromCLSID ).

Si el parámetro pszKey coincide con el nombre de una clave existente en la tabla del contexto de enlace, el nuevo objeto reemplaza el objeto existente en la tabla.

Al registrar un objeto mediante este método, el objeto no se libera hasta que se produzca una de las siguientes acciones:

  • Se reemplaza en la tabla por otro objeto por la misma clave.
  • Se quita de la tabla mediante una llamada a IBindCtx::RevokeObjectParam.
  • Se libera el contexto de enlace. Todos los objetos registrados se liberan cuando se libera el contexto de enlace.

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