CoQueryProxyBlanket
Retrieves the
authentication information the client uses to make calls on the specified
proxy.
HRESULT CoQueryProxyBlanket(
void* pProxy, |
//Location for the proxy to query |
DWORD* pAuthnSvc, |
//Location for the the current authorization service |
DWORD*
pAuthzSvc, |
//Location for the the current authorization service |
OLECHAR
** pServerPrincName, |
//Location for the current principal name |
DWORD * pAuthnLevel, |
//Location for the current authentication level |
DWORD * pImpLevel, |
//Location for the current impersonation level |
RPC_AUTH_IDENTITY_HANDLE
** ppAuthInfo, |
//Location for the value passed to
IClientSecurity::SetBlanket |
DWORD
** pCapabilities |
//Location for flags indicating further capabilities
of the proxy |
); |
|
Parameters
pProxy
[in] Pointer
to an interface on the proxy to query.
pAuthnSvc
[out] Pointer
to a DWORD value defining the current authentication service. This will
be a single value taken from the list of RPC_C_AUTHN_xxx
pAuthzSvc
[out] Pointer
to a DWORD value defining the current authorization service. This will
be a single value taken from the list of RPC_C_AUTHZ_xxx
pServerPrincName
[out] Pointer
to the current principal name. The string will be allocated by the one called
using CoTaskMemAlloc
pAuthnLevel
[out] Pointer
to a DWORD value defining the current authentication level. This will be a
single value taken from the list of RPC_C_AUTHN_LEVEL_xxx
pImpLevel
[out] Pointer
to a DWORD value defining the current impersonation level. This will be a
single value taken from the list of RPC_C_IMP_LEVEL_xxx
ppAuthInfo
[out] Pointer
to the pointer value passed to IClientSecurity::SetBlanket indicating
the identity of the client. Because this points to the value itself and is not
a copy, it should not be manipulated. May be NULL, in which case the
information is not retrieved.
pCapabilities
[out] Pointer
to a DWORD of flags indicating further capabilities of the proxy. Currently, no
flags are defined for this parameter and it will only return EOAC_NONE. May be
NULL, in which case the flags indicating further capabilities are not
retrieved.
Return Values
S_OK
Success.
E_INVALIDARG
One or more
arguments are invalid.
E_OUTOFMEMORY
Insufficient
memory to create the pasAuthnSvc out-parameter.
Remarks
CoQueryProxyBlanket is called by the client to retrieve the
authentication information COM will use on calls made from the specified proxy.
This function encapsulates the following sequence of common calls (error
handling excluded):
pProxy->QueryInterface(IID_IClientSecurity,
(void**)&pcs);
pcs->QueryBlanket(pProxy, pAuthnSvc, pAuthzSvc,
pServerPrincName,
pAuthnLevel, pImpLevel, ppAuthInfo, pCapabilities);
pcs->Release();
This sequence
calls QueryInterface on the proxy for IClientSecurity, and with
the resulting pointer, calls IClientSecurity::QueryBlanket, and then
releases the pointer.
In pProxy,
you can pass any proxy, such as a proxy you get through a call to CoCreateInstance,
CoUnmarshalInterface, or just passing an interface pointer as a
parameter. It can be any interface. You cannot pass a pointer to something that
is not a proxy. Thus you can t pass a pointer to an interface that has the
local keyword in its interface definition since no proxy is created for such an
interface. IUnknown is the exception.
See Also