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,则 RpcCallAttribut es 中的一个或多个字段长度不足且无法填充。 有关处理ERROR_MORE_DATA的详细信息,请参阅 RPC_CALL_ATTRIBUTES_V2 中的备注。

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

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

言论

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

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

数据报协议序列不支持 RpcServerInqCallAttributes 函数,例如 ncadg_*。 如果在对数据报协议序列执行的调用中调用,则返回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 [仅限桌面应用]
目标平台 窗户
标头 rpcasync.h (包括 Rpc.h)
Rpcrt4.lib
DLL Rpcrt4.dll

另请参阅

RPC_CALL_ATTRIBUTES_V2

RpcAsyncGetCallHandle