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
Return Values
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
IClientSecurity::CopyProxy, Security in COM