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) |