Partager via


Fonction CoCopyProxy (combaseapi.h)

Effectue une copie privée du proxy spécifié.

Syntaxe

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

Paramètres

[in] pProxy

Pointeur vers l’interface IUnknown sur le proxy à copier. Ce paramètre ne peut pas avoir la valeur NULL.

[out] ppCopy

Adresse de la variable pointeur qui reçoit le pointeur d’interface vers la copie du proxy. Ce paramètre ne peut pas avoir la valeur NULL.

Valeur retournée

Cette fonction peut retourner les valeurs suivantes.

Code de retour Description
S_OK
Indique la réussite de l’opération.
E_INVALIDARG
Un ou plusieurs arguments ne sont pas valides.

Remarques

CoCopyProxy effectue une copie privée du proxy spécifié. En règle générale, cette fonction est appelée lorsqu’un client doit modifier les informations d’authentification de son proxy par le biais d’un appel à CoSetProxyBlanket ou À IClientSecurity::SetBlanket sans modifier ces informations pour d’autres clients. CoSetProxyBlanket affecte tous les utilisateurs d’un instance d’un proxy. Ainsi, la création d’une copie privée du proxy via un appel à CoCopyProxy, puis l’appel de CoSetProxyBlanket (ou IClientSecurity::SetBlanket) à l’aide de la copie élimine le problème.

Cette fonction d’assistance encapsule la séquence suivante d’appels courants (gestion des erreurs exclue) :

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

Les interfaces locales ne peuvent pas être copiées. IUnknown et IClientSecurity sont des exemples d’interfaces locales existantes.

Les copies du même proxy ont une relation spéciale par rapport à QueryInterface. Étant donné un proxy, a, de l’interface IA d’un objet distant, supposons qu’une copie d’un est créée, appelée b. Dans ce cas, l’appel de QueryInterface à partir du proxy b pour IID_IA ne récupère pas l’interface IA sur b, mais celle sur un, le proxy d’origine avec les paramètres de sécurité « par défaut » pour l’interface IA.

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête combaseapi.h (inclure Objbase.h)
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

CoSetProxyBlanket

IClientSecurity::SetBlanket

Sécurité dans COM