RpcServerUseProtseqEpEx 函数 (rpcdce.h)

RpcServerUseProtseqEpEx 函数告知 RPC 运行时库将指定的协议序列与指定终结点结合使用来接收远程过程调用。

语法

RPC_STATUS RpcServerUseProtseqEpEx(
  RPC_WSTR     Protseq,
  unsigned int MaxCalls,
  RPC_WSTR     Endpoint,
  void         *SecurityDescriptor,
  PRPC_POLICY  Policy
);

参数

Protseq

指向要注册到 RPC 运行时库的协议序列的字符串标识符的指针。

MaxCalls

ncacn_ip_tcp协议序列的积压工作队列长度。 所有其他协议序列都忽略此参数。 使用 RPC_C_PROTSEQ_MAX_REQS_DEFAULT 指定默认值。 请参阅“备注”。

Endpoint

指向终结点地址信息的指针,用于为 Protseq 指定的协议序列创建绑定。

SecurityDescriptor

指向为安全子系统提供的可选参数的指针。 仅用于 ncacn_npncalrpc 协议序列。 所有其他协议序列都忽略此参数。 不建议在终结点上使用安全描述符来确保服务器的安全。 此参数不显示在此 API 的 DCE 规范中。

Policy

指向 RPC_POLICY 结构的指针,该结构包含设置特定于传输的属性的标志。 对于 ncadg_mq 传输,这些标志指定服务器进程接收队列的属性。 对于 ncacn_ip_tcpncadg_ip_udp 传输,这些标志限制动态端口的端口分配,并允许多宿主计算机选择性地绑定到网络接口卡。

策略” 字段中的标志设置仅在使用 ncacn_ip_tcpncadg_ip_udpncadg_mq 协议序列时才有效。 对于所有其他协议序列,RPC 运行时会忽略这些值。

注意 调用 RpcServerUseProtseqEpEx 函数时,将忽略与动态终结点关联的策略部分,因为端口是在终结点本身中指定的。
 

返回值

含义
RPC_S_OK
调用成功。
RPC_S_PROTSEQ_NOT_SUPPORTED
此主机上不支持协议序列。
RPC_S_INVALID_RPC_PROTSEQ
协议序列无效。
RPC_S_INVALID_ENDPOINT_FORMAT
终结点格式无效。
RPC_S_OUT_OF_MEMORY
系统内存不足。
RPC_S_DUPLICATE_ENDPOINT
终结点重复。
RPC_S_INVALID_SECURITY_DESC
安全描述符无效。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

RpcServerUseProtseqEpEx 的参数和效果子和 RpcServerUseProtseqEp 的参数和效果。 区别在于 Policy 参数,它允许在终结点上设置特定策略。 将 RPC_POLICY 结构的 NICFlags 字段设置为零,当与 ncacn_ip_tcpncadg_ip_udp 传输一起使用时,此扩展函数等效于原始 RpcServerUseProtseqEp

服务器应用程序调用 RpcServerUseProtseqEpEx ,以向 RPC 运行时库注册一个协议序列。 在每个协议序列注册中, RpcServerUseProtseqEpEx 包括指定的终结点地址信息。

若要接收远程过程调用请求,服务器必须向 RPC 运行时库注册至少一个协议序列。 服务器应用程序可以多次调用此例程来注册其他协议序列和终结点。 对于服务器注册的每个协议序列,RPC 运行时库会创建一个或多个终结点,服务器通过这些终结点接收远程过程调用请求。 RPC 运行时库为每个协议序列创建不同的终结点。 但是,进程中的每个接口都可以通过任何终结点进行访问。 有关详细信息,请参阅编写安全 RPC 客户端或服务器。

对于 MaxCalls,应用程序提供的值只是一个提示。 RPC 运行时或 Windows 套接字提供程序可能会重写 值。 例如,在 Windows XP 或 Windows 2000 专业版上,该值限制为 5。 忽略大于 5 的值,改用 5。 在 Windows Server 2003 和 Windows 2000 Server 上,将遵循该值。

应用程序必须小心地在 MaxCalls 中传递合理的值。 服务器、高级服务器或数据中心服务器上的较大值可能会导致使用大量非分页池内存。 使用过小的值也是不利的,因为如果积压队列用尽,则可能会导致 TCP RST 从服务器满足 TCP SYN 数据包。 应用程序开发人员在确定 MaxCalls 的正确值时,应平衡内存占用量和可伸缩性要求。

将计算机配置为使用选择性绑定时,成功返回并不保证服务器已为计算机上存在的所有网络接口创建终结点。 RPC 运行时可能无法侦听某些网络接口,具体取决于选择性绑定设置。 此外,如果接口尚未收到使用 DHCP 的 IP 地址,则 RPC 服务器在分配 DHCP 地址之前不会侦听网络接口。 成功返回意味着服务器正在侦听至少一个网络接口;可以通过调用 RpcServerInqBindings 函数来获取可接收远程过程调用的绑定句柄的完整列表。

有关详细信息,请参阅 服务器端绑定字符串绑定为端口分配和选择性绑定配置注册表以及 RPC 消息队列 和 MIDL 引用页 消息ncadg_mq

要求

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

另请参阅

RPC_POLICY

RpcServerUseAllProtseqsEx

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx

编写安全 RPC 客户端或服务器