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,则不会检索当前功能标志。
返回值
此方法可以返回以下值。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
|
一个或多个参数无效。 |
|
内存不足,无法创建 pServerPrincName 缓冲区。 |
注解
QueryBlanket 由客户端调用,以检索 COM 将在从指定接口代理进行的调用中使用的身份验证信息。 使用指向代理上的接口的指针,客户端将首先调用 QueryInterface 以获取指向 IClientSecurity 的指针;然后,使用此指针,客户端将调用 QueryBlanket,然后释放指针。 此调用序列封装在帮助程序函数 CoQueryProxyBlanket 中。
在 pProxy 中,传递接口指针。 但是,不能将指针传递到不使用代理的接口。 因此,不能将指针传递给在其接口定义中具有本地关键字 (keyword) 的接口,因为不会为此类接口创建代理。 IUnknown 是此规则的例外。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | objidl.h (包括 ObjIdl.h) |