RpcServerInqCallAttributesA 函数 (rpcasync.h)

RpcServerInqCallAttributes 函数是获取客户端安全上下文属性的 RPC 服务器调用。

语法

RPC_STATUS RpcServerInqCallAttributesA(
  [in]      RPC_BINDING_HANDLE ClientBinding,
  [in, out] void               *RpcCallAttributes
);

参数

[in] ClientBinding

可选。 对于服务器例程中的显式绑定, ClientBinding 是用来调用管理器例程的绑定句柄。 请参阅“备注”。

[in, out] RpcCallAttributes

接收调用属性的RPC_CALL_ATTRIBUTES_V2结构。

返回值

成功后返回RPC_S_OK,并填充 RpcCallAttributes 。 如果返回ERROR_MORE_DATA,则 RpcCallAttributes 中的一个或多个字段长度不足,无法填充。 有关处理ERROR_MORE_DATA的详细信息,请参阅 RPC_CALL_ATTRIBUTES_V2 中的备注。

失败时, RpcCallAttributes 的内容未定义,并可能由 RPC 进行部分修改。

注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

RpcServerInqCallAttributes 函数使用版本控制方案来合并新功能,而无需引入带有后缀标识符的新函数。 例如,RPC_CALL_ATTRIBUTES_V2的第二个版本(在 标头中使用简单 #define 标识)可以添加新成员,以促进内置到 RpcServerInqCallAttributes 函数的未来版本中的新功能,而无需释放名为 RpcServerInqCallAttributesEx 的函数。

如果在服务器例程外部调用 RpcServerInqCallAttributes 函数,并且该函数调用查询异步 RPC 调用的安全上下文属性,则可以通过从异步句柄调用 RpcAsyncGetCallHandle 函数来检索 ClientBinding

数据报协议序列(如 ncadg_*)不支持 RpcServerInqCallAttributes 函数。 如果在对数据报协议序列执行的调用上调用,则返回RPC_S_CANNOT_SUPPORT。

RpcServerInqCallAttributes 函数是线程安全的。

示例

RPC_CALL_ATTRIBUTES CallAttributes;  // this maps to RPC_CALL_ATTRIBUTES_V1

memset(&CallAttributes, 0, sizeof(CallAttributes));
CallAttributes.Version = RPC_CALL_ATTRIBUTES_VERSION;    // maps to 1
CallAttributes.Flags = ;//....
Status = RpcServerInqCallAttributes(0, &ClientContextAttributes);

注意

rpcasync.h 标头将 RpcServerInqCallAttributes 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 rpcasync.h (包括 Rpc.h)
Library Rpcrt4.lib
DLL Rpcrt4.dll

另请参阅

RPC_CALL_ATTRIBUTES_V2

RpcAsyncGetCallHandle