rpcServerListen 函数 (rpcdce.h)

RpcServerListen 函数向 RPC 运行时库发出信号,以侦听远程过程调用。 此函数不会影响自动侦听接口;如果需要该功能,请使用 RpcServerRegisterIfEx

语法

RPC_STATUS RpcServerListen(
  unsigned int MinimumCallThreads,
  unsigned int MaxCalls,
  unsigned int DontWait
);

参数

MinimumCallThreads

RPC 运行时的提示,指定应在给定服务器中创建和维护的最小调用线程数。 此值只是一个提示,在不同版本的 Windows 中以不同的方式解释。 在 Windows XP 中,此值是 RPC 运行时创建的每个线程池中以前创建的线程数。 应用程序应为此参数指定一个参数,并将线程创建决策延迟到 RPC 运行时。

MaxCalls

建议服务器可以执行的并发远程过程调用的最大数目。 为了提高性能,RPC 运行时库将 MaxCalls 参数解释为建议的限制,而不是绝对上限。

使用 RPC_C_LISTEN_MAX_CALLS_DEFAULT 指定默认值。

DontWait

控制 RpcServerListen 返回的标志。 非零值指示 RpcServerListen 应在完成函数处理后立即返回。 值为零指示 RpcServerListen 在调用 RpcMgmtStopServerListening 函数并完成所有远程调用之前,不应返回 RpcServerListen。

返回值

含义
RPC_S_OK
调用成功。
RPC_S_ALREADY_LISTENING
服务器已在侦听。
RPC_S_NO_PROTSEQS_REGISTERED
未注册任何协议序列。
RPC_S_MAX_CALLS_TOO_SMALL
最大调用值太小。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

当服务器准备好处理远程过程调用时,服务器会调用 RpcServerListen 。 RPC 允许服务器同时处理多个调用。 MaxCalls 参数建议服务器应执行的最大并发远程过程调用数。

MaxCalls 值不应为零,并且应大于 MinimumCallThreads。 大于 0x7FFFFFFF 的值设置为0x7FFFFFFF,恕不另行通知。

Windows XP/2000: MaxCalls 参数设置为 RPC_C_LISTEN_MAX_CALLS_DEFAULT 将消除并发远程过程调用的限制,而不是将其设置为常量定义的值 1234。 删除最大并发调用数限制允许计算机可以处理的并发远程过程调用数。 此行为可以提高 RPC 运行时的效率。

服务器应用程序负责服务器管理器例程之间的并发控制,因为每个例程都在单独的线程中执行。

DontWait 参数的值为零时,RPC 运行时库将继续侦听远程过程调用 (也就是说,在发生以下事件之一之前,例程不会返回到服务器应用程序) :

收到停止侦听请求后,RPC 运行时库将停止接受所有已注册接口的新远程过程调用。 允许执行调用完成,包括回调。 所有调用完成后, RpcServerListen 将返回到调用方。

DontWait 参数具有非零值时, RpcServerListen 将在处理与函数关联的所有指令后立即返回到服务器。 可以使用 RpcMgmtWaitServerListen 函数执行通常与 RpcServerListen 关联的等待操作。

注意RpcServerListen 的 Microsoft RPC 实现包括 DCE 规范中未出现的两个附加参数:DontWaitMinimumCallThreads
 

要求

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

另请参阅

RpcMgmtStopServerListening

RpcMgmtWaitServerListen

RpcServerRegisterIf

RpcServerRegisterIfEx

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf