Share via


CoQueryProxyBlanket

This function retrieves the authentication information the client uses to make calls on the specified proxy.

HRESULT CoQueryProxyBlanket(
  IUnknown* pProxy,
  DWORD* pAuthnSvc,
  DWORD* pAuthzSvc,
  OLECHAR** pServerPrincName,
  DWORD* pAuthnLevel,
  DWORD* pImpLevel,
  RPC_AUTH_IDENTITY_HANDLE* ppAuthInfo,
  DWORD* pCapabilities 
);

Parameters

  • pProxy
    [in] Pointer indicating the proxy to query. For more information, see the Remarks section.
  • 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 callee using CoTaskMemAlloc and must be freed by the caller using CoTaskMemFree when they are done with it. Notice that the actual principal name is returned. The EOAC_MAKE_FULLSIC flag is not accepted to convert the principal name. 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 impersonation level is not retrieved. When using NTLMSSP, this value could be RPC_IMP_LEVEL_IDENTIFY or RPC_IMP_LEVEL_IMPERSONATE. When using Kerberos, it will be RPC_IMP_LEVEL_IDENTIFY, RPC_IMP_LEVEL_IMPERSONATE, or RPC_C_IMP_LEVEL_DELEGATE.
  • ppAuthInfo
    [out] Pointer to the pointer value indicating the identity of the client that was passed to the last IClientSecurity::SetBlanket call (or the default value). Default values are only valid until the proxy is released. If no SetBlanket call replaced the default security blanket, and if the client specified a structure for the current authentication service in the pAuthInfo parameter to CoInitializeSecurity, that value is returned. Because this points to the value itself and is not a copy, it should not be manipulated or freed.
  • pCapabilities
    [out] Pointer to a DWORD of flags indicating the capabilities of the proxy. May be NULL, in which case the flags are not retrieved.

Return Values

  • S_OK
    Success.
  • E_INVALIDARG
    One or more arguments are invalid.
  • E_OUTOFMEMORY
    Insufficient memory to create the pServerPrincName 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 to get a pointer to 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 you can pass an interface pointer. It can be any interface. You cannot pass a pointer to something that is not a proxy. Therefore, you cannot pass a pointer to an interface that has the local keyword in its interface definition because no proxy is created for such an interface. IUnknown is the exception to this rule.

To determine whether the platform supports this function, see Determining Supported COM APIs.

Requirements

OS Versions: Windows CE 3.0 and later.
Header: Objbase.h.
Link Library: Ole32.lib.

Last updated on Wednesday, April 13, 2005

© 2005 Microsoft Corporation. All rights reserved.