RpcServerInterfaceGroupCreateA 函数 (rpcdce.h)

RpcServerInterfaceGroupCreate 函数为服务器应用程序创建 RPC 服务器接口组。 此接口组完全指定 RPC 服务器应用程序的接口、终结点和空闲属性。 创建接口组后,可以根据需要激活和停用接口组。

语法

RPC_STATUS RpcServerInterfaceGroupCreateA(
  [in]  RPC_INTERFACE_TEMPLATEA              *Interfaces,
  [in]  unsigned long                        NumIfs,
  [in]  RPC_ENDPOINT_TEMPLATEA               *Endpoints,
  [in]  unsigned long                        NumEndpoints,
  [in]  unsigned long                        IdlePeriod,
  [in]  RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN IdleCallbackFn,
  [in]  void                                 *IdleCallbackContext,
  [out] PRPC_INTERFACE_GROUP                 IfGroup
);

参数

[in] Interfaces

指向 RPC_INTERFACE_TEMPLATE 结构数组的指针,这些结构定义接口组公开的接口。

[in] NumIfs

接口中的元素数。

[in] Endpoints

指向 RPC_ENDPOINT_TEMPLATE 结构的数组的指针,这些结构定义接口组使用的终结点。

[in] NumEndpoints

终结点中的元素数。

[in] IdlePeriod

接口组变为空闲状态后,RPC 运行时在调用空闲回调之前应等待的时间长度(以秒为单位)。 0 表示立即调用回调。 INFINITE 表示服务器应用程序不关心接口组的空闲状态。

[in] IdleCallbackFn

一个RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN回调,在接口组空闲到 IdlePeriod 中给定的时间长度后,RPC 运行时将调用该回调。 仅当 IdlePeriodINFINITE 时,才能为 NULL

[in] IdleCallbackContext

要传递到 IdleCallbackFn 中空闲回调的用户定义指针。

[out] IfGroup

如果成功,则为指向接收新创建的接口组句柄 的RPC_INTERFACE_GROUP 缓冲区的指针。 如果此函数失败, 则 IfGroup 未定义。

返回值

含义
RPC_S_OK
调用成功。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

可以选择在接口组空闲时通知服务器应用程序。 尽管任何应用程序都可以利用此功能,但它面向希望允许其服务空闲停止的服务开发人员。

IdlePeriod 可防止 RPC 运行时在空闲状态快速更改时生成大量通知;对于触发的服务,可帮助服务避免不必要的启动和停止。 开发人员应考虑服务初始化和关闭的成本、新活动发生的预期频率,以及选择此值时使服务保持空闲的成本。 空闲时间过短会导致服务在新客户端活动发生时频繁启动和停止,而高空闲期会导致服务在不执行有意义的工作的情况下消耗资源。

接口组中的接口只能通过同一组的终结点调用。 不能通过属于组的终结点调用不属于接口组的接口。

RPC 服务器活动并不总是对服务器应用程序可见。 在某些情况下,即使长时间没有调度任何调用,也只需让客户端与服务器建立开放连接即可使其保持活动状态。 服务器应用程序不得依赖于声明组处于空闲状态的 RPC 运行时与上次调度调用后的时间之间的任何关联。

注意

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

要求

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

另请参阅

RpcServerInterfaceGroupActivate

RpcServerInterfaceGroupClose

RpcServerInterfaceGroupDeactivate

RpcServerInterfaceGroupInqBindings