RpcServerInterfaceGroupCreateW 函数 (rpcdce.h)

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

语法

RPC_STATUS RpcServerInterfaceGroupCreateW(
  [in]  RPC_INTERFACE_TEMPLATEW              *Interfaces,
  [in]  unsigned long                        NumIfs,
  [in]  RPC_ENDPOINT_TEMPLATEW               *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 回调,RPC 运行时将在接口组空闲后调用,以 IdlePeriod中给定的时间长度。 仅当 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 [仅限桌面应用]
目标平台 窗户
标头 rpcdce.h (包括 Rpc.h)
Rpcrt4.lib
DLL Rpcrt4.dll

另请参阅

RpcServerInterfaceGroupActivate

RpcServerInterfaceGroupClose

RpcServerInterfaceGroupDeactivate

RpcServerInterfaceGroupInqBindings