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