CoCopyProxy  
Makes a
private copy of the specified proxy.
HRESULT CoCopyProxy(
| 
       IUnknown
  *  punkProxy  | 
  
   //IUnknown pointer to the proxy to copy  | 
 
| 
       IUnknown
  **  ppunkCopy  | 
  
   //Indirect IUnknown pointer to the copy  | 
 
| 
      );  | 
  
   | 
 
Parameter
punkProxy
[in] Points
to the IUnknown interface on the proxy to be copied. May not be NULL.
ppunkCopy
[out] Points
to the location of the IUnknown pointer to the copy of the proxy. It may not be
NULL.
Return Values
S_OK
Success.
E_INVALIDARG
One or more
arguments are invalid.
Remarks
CoCopyProxy makes a private copy of the specified proxy.
Typically, this is called when a client needs to change the authentication
information of its proxy through a call to either CoSetClientBlanket or IClientSecurity::SetBlanket
without changing this information for other clients. CoSetClientBlanket
affects all the users of an instance of a proxy, so creating a private copy of
the proxy through a call to CoCopyProxy eliminates the problem.
This function
encapsulates the following sequence of common calls (error handling excluded):
   
pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
    pcs->CopyProxy(punkProxy,
ppunkCopy);
   
pcs->Release();
 
Local
interfaces may not be copied. IUnknown and IClientSecurity are examples of existing
local interfaces.
Copies of the
same proxy have a special relationship with respect to QueryInterface.
Given a proxy, a, of the IA interface of a remote object, suppose
a copy of a is created, called b. In this case, calling
QueryInterface from the b proxy for IID_IA will not retrieve the IA
interface on b, but the one on a, the original proxy with the
 default  security settings for the IA interface.
See Also