IClientSecurity::QueryBlanket 方法 (objidl.h)

检索客户端用于对指定代理进行调用的身份验证信息。

语法

HRESULT QueryBlanket(
  [in]  IUnknown *pProxy,
  [out] DWORD    *pAuthnSvc,
  [out] DWORD    *pAuthzSvc,
  [out] OLECHAR  **pServerPrincName,
  [out] DWORD    *pAuthnLevel,
  [out] DWORD    *pImpLevel,
  [out] void     **pAuthInfo,
  [out] DWORD    *pCapabilites
);

参数

[in] pProxy

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

[out] pAuthnSvc

当前身份验证服务。 这是从 身份验证服务常量列表中获取的单个值。 此参数不能为 NULL

[out] pAuthzSvc

当前授权服务。 这是从 授权常量列表中获取的单个值。 此参数不能为 NULL

[out] pServerPrincName

当前主体名称。 字符串将由被调用方使用 CoTaskMemAlloc 函数分配,并且必须由调用方使用 CoTaskMemFree 函数释放。 请注意,返回实际的主体名称。 不接受EOAC_MAKE_FULLSIC标志来转换基元名称。 如果调用方指定 NULL,则不会检索当前主体名称。

[out] pAuthnLevel

当前身份验证级别。 这是从 身份验证级别常量列表中获取的单个值。 如果此参数为 NULL,则不会检索当前身份验证级别。

[out] pImpLevel

当前模拟级别。 这是从 模拟级别常量列表中获取的单个值。 如果此参数为 NULL,则不会检索当前模拟级别。

[out] pAuthInfo

指向句柄的指针,指示传递到最后一个 IClientSecurity::SetBlanket 调用 (的客户端标识或默认值) 。 默认值仅在释放代理之前有效。 如果调用方指定 NULL,则不会检索客户端标识。

返回的句柄所引用的结构的格式取决于身份验证服务。 对于 NTLMSSP 和 Kerberos,如果客户端在 pAuthInfo 参数中将结构指定为 CoInitializeSecurity,则返回该值。 对于 Schannel,如果可以从证书管理器检索客户端的证书,则会在此处返回该值。 否则,返回 NULL 。 由于这指向值本身,并且不是副本,因此不应对其进行操作或释放。

[out] pCapabilites

代理的功能。 这些标志在 EOLE_AUTHENTICATION_CAPABILITIES 枚举中定义。 如果此参数为 NULL,则不会检索当前功能标志。

返回值

此方法可以返回以下值。

返回代码 说明
S_OK
该方法已成功完成。
E_INVALIDARG
一个或多个参数无效。
E_OUTOFMEMORY
内存不足,无法创建 pServerPrincName 缓冲区。

注解

QueryBlanket 由客户端调用,以检索 COM 将在从指定接口代理进行的调用中使用的身份验证信息。 使用指向代理上的接口的指针,客户端将首先调用 QueryInterface 以获取指向 IClientSecurity 的指针;然后,使用此指针,客户端将调用 QueryBlanket,然后释放指针。 此调用序列封装在帮助程序函数 CoQueryProxyBlanket 中。

pProxy 中,传递接口指针。 但是,不能将指针传递到不使用代理的接口。 因此,不能将指针传递给在其接口定义中具有本地关键字 (keyword) 的接口,因为不会为此类接口创建代理。 IUnknown 是此规则的例外。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 objidl.h (包括 ObjIdl.h)

另请参阅

CoQueryProxyBlanket

CoSetProxyBlanket

IClientSecurity