Compartir a través de


Función CoCopyProxy (combaseapi.h)

Realiza una copia privada del proxy especificado.

Sintaxis

HRESULT CoCopyProxy(
  [in]  IUnknown *pProxy,
  [out] IUnknown **ppCopy
);

Parámetros

[in] pProxy

Puntero a la interfaz IUnknown en el proxy que se va a copiar. Este parámetro no puede ser NULL.

[out] ppCopy

Dirección de la variable de puntero que recibe el puntero de interfaz a la copia del proxy. Este parámetro no puede ser NULL.

Valor devuelto

Esta función puede devolver los valores siguientes.

Código devuelto Descripción
S_OK
Indica que se completó correctamente.
E_INVALIDARG
Uno o más argumentos no son válidos.

Comentarios

CoCopyProxy realiza una copia privada del proxy especificado. Normalmente, se llama a esta función cuando un cliente necesita cambiar la información de autenticación de su proxy a través de una llamada a CoSetProxyBlanket o IClientSecurity::SetBlanket sin cambiar esta información para otros clientes. CoSetProxyBlanket afecta a todos los usuarios de una instancia de un proxy, por lo que la creación de una copia privada del proxy a través de una llamada a CoCopyProxyBlanket y, a continuación, la llamada a CoSetProxyBlanket (o IClientSecurity::SetBlanket) mediante la copia elimina el problema.

Esta función auxiliar encapsula la siguiente secuencia de llamadas comunes (se excluye el control de errores):

    pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
    pcs->CopyProxy(punkProxy, ppunkCopy);
    pcs->Release();

Es posible que no se copien las interfaces locales. IUnknown e IClientSecurity son ejemplos de interfaces locales existentes.

Las copias del mismo proxy tienen una relación especial con respecto a QueryInterface. Dado un proxy, a, de la interfaz IA de un objeto remoto, supongamos que se crea una copia de un elemento , denominado b. En este caso, al llamar a QueryInterface desde el proxy b para IID_IA no se recuperará la interfaz IA en b, pero la de un proxy original con la configuración de seguridad "predeterminada" para la interfaz IA.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado combaseapi.h (incluya Objbase.h)
Library Ole32.lib
Archivo DLL Ole32.dll

Consulte también

CoSetProxyBlanket

IClientSecurity::SetBlanket

Seguridad en COM