Función CreateObjrefMoniker (objbase.h)

Crea un moniker OBJREF basado en un puntero a un objeto .

Sintaxis

HRESULT CreateObjrefMoniker(
  [in, optional] LPUNKNOWN punk,
  [out]          LPMONIKER *ppmk
);

Parámetros

[in, optional] punk

Puntero a la interfaz IUnknown en el objeto que el moniker va a representar.

[out] ppmk

Dirección de un puntero a la interfaz IMoniker en el moniker OBJREF que se creó.

Valor devuelto

Esta función puede devolver los valores devueltos estándar E_OUTOFMEMORY, E_UNEXPECTED y S_OK.

Comentarios

Los clientes usan monikers de OBJREF para obtener un puntero serializado a un objeto en ejecución en el espacio de direcciones de los servidores.

Normalmente, el servidor llama a CreateObjrefMoniker para crear un moniker OBJREF y, a continuación, llama a IMoniker::GetDisplayName y, por último, libera el moniker. El nombre para mostrar de un moniker OBJREF tiene el formato:

OBJREF:nnnnnn

Donde nnnn es una codificación base 64 arbitrariamente larga que encapsula la ubicación del equipo, el punto de conexión de proceso y el identificador de puntero de interfaz (IPID) del objeto en ejecución.

A continuación, el nombre para mostrar se puede transferir al cliente como texto. Por ejemplo, el nombre para mostrar puede residir en una página HTML que descarga el cliente.

El cliente puede pasar el nombre para mostrar a MkParseDisplayName, que crea un moniker OBJREF basado en el nombre para mostrar. Una llamada al método IMoniker::BindToObject monikers obtiene un puntero serializado a la instancia en ejecución en el servidor.

Por ejemplo, un componente COM del lado servidor contenido en una página de servidor activo puede crear un moniker OBJREF, obtener su nombre para mostrar y escribir el nombre para mostrar en la salida HTML que se envía al explorador cliente. Un script que se ejecuta en el lado cliente puede usar el nombre para mostrar para obtener acceso al propio objeto en ejecución. Un script de Visual Basic del lado cliente, por ejemplo, podría almacenar el nombre para mostrar en una variable denominada strMyName e incluir esta línea:

objMyInstance = GetObject(strMyName)

El motor de scripts realiza internamente las llamadas a MkParseDisplayName e IMoniker::BindToObject, y el script puede usar objMyInstance para hacer referencia directamente al objeto en ejecución.

Requisitos

   
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 objbase.h
Library Ole32.lib
Archivo DLL Ole32.dll
Conjunto de API ext-ms-win-com-ole32-l1-1-5 (introducido en Windows 10, versión 10.0.15063)

Consulte también

Imoniker