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 constants. May be NULL, in which
case the current authentication service is not retrieved.
-
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 constants. May be NULL, in which
case the current authorization service is not retrieved.
-
pServerPrincName
-
[out] Pointer to the current principal name. The string will be allocated by
the one called using CoTaskMemAlloc and must be
freed by the caller using CoTaskMemFree when they
are done with it. May be NULL, in which case the principal name is not
retrieved.
-
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 constants. May be NULL,
in which case the current authentication level is not retrieved.
-
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 constants. May be NULL,
in which case the current authentication level is not retrieved.
-
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
IClientSecurity::QueryBlanket,
Security in COM