coQueryProxyBlanket 函数 (combaseapi.h)

检索客户端用于对指定代理进行调用的身份验证信息。 这是 IClientSecurity::QueryBlanket 的帮助程序函数。

语法

HRESULT CoQueryProxyBlanket(
  [in]            IUnknown                 *pProxy,
  [out, optional] DWORD                    *pwAuthnSvc,
  [out, optional] DWORD                    *pAuthzSvc,
  [out, optional] LPOLESTR                 *pServerPrincName,
  [out, optional] DWORD                    *pAuthnLevel,
  [out, optional] DWORD                    *pImpLevel,
  [out, optional] RPC_AUTH_IDENTITY_HANDLE *pAuthInfo,
  [out, optional] DWORD                    *pCapabilites
);

参数

[in] pProxy

指示要查询的代理的指针。 此参数不能为 NULL。 有关详细信息,请参见“备注”部分。

[out, optional] pwAuthnSvc

指向接收当前身份验证服务的变量的指针。 这是从 身份验证服务常量获取的单个值。 此参数不能为 NULL

[out, optional] pAuthzSvc

指向接收当前授权服务的变量的指针。 这是从 授权常量获取的单个值。 如果调用方指定 NULL,则不会检索当前授权服务。

[out, optional] pServerPrincName

当前主体名称。 字符串将由被调用方使用 CoTaskMemAlloc 分配,并且必须由调用方使用 CoTaskMemFree 释放。 pCapabilities 参数中不接受EOAC_MAKE_FULLSIC标志。 有关 msstd 和 fullsic 窗体的详细信息,请参阅 主体名称。 如果调用方指定 NULL,则不会检索当前主体名称。

[out, optional] pAuthnLevel

指向接收当前身份验证级别的变量的指针。 这是从 身份验证级别常量获取的单个值。 如果调用方指定 NULL,则不会检索当前身份验证级别。

[out, optional] pImpLevel

指向接收当前模拟级别的变量的指针。 这是从 模拟级别常量中提取的单个值。 如果调用方指定 NULL,则不会检索当前模拟级别。

[out, optional] pAuthInfo

指向句柄的指针,该句柄接收传递给最后一个 IClientSecurity::SetBlanket 调用 (的客户端标识,或) 默认值。 默认值仅在释放代理之前有效。 如果调用方指定 NULL,则不会检索客户端标识。 句柄引用的结构的格式取决于身份验证服务。 应用程序不应写入或释放内存。 对于 NTLMSSP 和 Kerberos,如果客户端将 pAuthInfo 参数中的结构指定为 CoInitializeSecurity,则返回该值。 对于 Schannel,如果可以从证书管理器检索客户端的证书,则会在此处返回该值。 否则,返回 NULL 。 请参阅 RPC_AUTH_IDENTITY_HANDLE

[out, optional] pCapabilites

指向接收代理功能的变量的指针。 如果调用方指定 NULL,则不会检索当前功能标志。

返回值

此函数可以返回E_INVALIDARG、E_OUTOFMEMORY和S_OK的标准返回值。

注解

客户端调用 CoQueryProxyBlanket 来检索 COM 将在从指定代理进行的调用中使用的身份验证信息。 此函数封装以下常见调用序列, () 排除的错误处理:

pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
pcs->QueryBlanket(
    pProxy, pAuthnSvc, pAuthzSvc, pServerPrincName, pAuthnLevel, pImpLevel, ppAuthInfo, pCapabilities
  );
pcs->Release();

此序列在代理上调用 QueryInterface 以获取指向 IClientSecurity 的指针,使用生成的指针调用 IClientSecurity::QueryBlanket ,然后释放该指针。

pProxy 中,可以传递任何代理,例如通过调用 CoCreateInstanceCoUnmarshalInterface 获取的代理,也可以传递接口指针。 它可以是任何接口。 不能传递指向不是代理的内容的指针。 因此,不能将指针传递给在其接口定义中具有本地关键字 (keyword) 的接口,因为没有为此类接口创建代理。 IUnknown 是此规则的例外。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 combaseapi.h (包括 Objbase.h)
Library Ole32.lib
DLL Ole32.dll

另请参阅

CoQueryClientBlanket

CoSetProxyBlanket

IClientSecurity::QueryBlanket

COM 中的安全性