CoQueryClientBlanket 函数 (combaseapi.h)
由服务器调用,以查明调用在当前线程上执行的方法的客户端。 这是 IServerSecurity::QueryBlanket 的帮助程序函数。
语法
HRESULT CoQueryClientBlanket(
[out, optional] DWORD *pAuthnSvc,
[out, optional] DWORD *pAuthzSvc,
[out, optional] LPOLESTR *pServerPrincName,
[out, optional] DWORD *pAuthnLevel,
[out, optional] DWORD *pImpLevel,
[out, optional] RPC_AUTHZ_HANDLE *pPrivs,
[in, out, optional] DWORD *pCapabilities
);
参数
[out, optional] pAuthnSvc
指向接收当前身份验证服务的变量的指针。 这是从 身份验证服务常量获取的单个值。 如果调用方指定 NULL,则不会检索当前身份验证服务。
[out, optional] pAuthzSvc
指向接收当前授权服务的变量的指针。 这是从 授权常量获取的单个值。 如果调用方指定 NULL,则不会检索当前授权服务。
[out, optional] pServerPrincName
当前主体名称。 字符串将由被调用方使用 CoTaskMemAlloc 分配,并且必须由调用方使用 CoTaskMemFree 释放。 默认情况下,Schannel 主体名称将采用 msstd 格式。 如果在 pCapabilities 参数中指定了EOAC_MAKE_FULLSIC,则将返回完整形式。 有关 msstd 和 fullsic 窗体的详细信息,请参阅 主体名称。 如果调用方指定 NULL,则不会检索当前主体名称。
[out, optional] pAuthnLevel
指向接收当前身份验证级别的变量的指针。 这是从 身份验证级别常量获取的单个值。 如果调用方指定 NULL,则不会检索当前身份验证级别。
[out, optional] pImpLevel
此参数必须为 NULL。
[out, optional] pPrivs
指向接收客户端应用程序特权信息的句柄的指针。 句柄所引用的结构的格式取决于身份验证服务。 应用程序不应写入或释放内存。 该信息仅在当前调用期间有效。 对于 NTLMSSP 和 Kerberos,这是一个标识客户端主体的字符串。 对于 Schannel,这是表示客户端证书 的CERT_CONTEXT 结构。 如果客户端没有证书,则返回 NULL 。 如果调用方指定 NULL,则不会检索当前特权信息。 请参阅 RPC_AUTHZ_HANDLE。
[in, out, optional] pCapabilities
返回指示调用功能的标志的指针。 若要请求在 Schannel 是身份验证服务时以完整形式返回主体名称,调用方可以在此参数中设置EOAC_MAKE_FULLSIC标志。 如果调用方指定 NULL,则不会检索当前功能。
返回值
此函数可以返回E_INVALIDARG、E_OUTOFMEMORY和S_OK的标准返回值。
注解
服务器调用 CoQueryClientBlanket 以获取有关调用当前线程上执行的方法的客户端的安全信息。 此函数封装以下常见调用序列, (排除的错误处理) :
CoGetCallContext(IID_IServerSecurity, (void**)&pss);
pss->QueryBlanket(pAuthnSvc, pAuthzSvc, pServerPrincName,
pAuthnLevel, pImpLevel, pPrivs, pCapabilities);
pss->Release();
此序列调用 CoGetCallContext 以获取指向 IServerSecurity 的 指针,并使用生成的指针调用 IServerSecurity::QueryBlanket ,然后释放指针。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | combaseapi.h (包括 Objbase.h) |
Library | Ole32.lib |
DLL | Ole32.dll |