rpcServerRegisterIf3 函数 (rpcdce.h)

RpcServerRegisterIf3 函数向 RPC 运行时库注册接口。

语法

RPC_STATUS RpcServerRegisterIf3(
  [in]           RPC_IF_HANDLE      IfSpec,
  [in, optional] UUID               *MgrTypeUuid,
  [in, optional] RPC_MGR_EPV        *MgrEpv,
  [in]           unsigned int       Flags,
  [in]           unsigned int       MaxCalls,
  [in]           unsigned int       MaxRpcSize,
  [in, optional] RPC_IF_CALLBACK_FN *IfCallback,
  [in, optional] void               *SecurityDescriptor
);

参数

[in] IfSpec

MIDL 生成的结构,指示要注册的接口。

[in, optional] MgrTypeUuid

指向要与 MgrEpv 参数关联的 UUID 类型的指针。 指定 null 参数值 (或 nil UUID) 将 IfSpec 注册到 nil 类型 UUID

[in, optional] MgrEpv

管理器例程的入口点矢量 (EPV) 。 若要使用 MIDL 生成的默认 EPV,请指定 null 值。 有关详细信息,请参阅 RPC_MGR_EPV

[in] Flags

标志。 有关标志值的列表,请参阅 接口注册标志

[in] MaxCalls

服务器可以在 自动侦听 接口上接受的最大并发远程过程调用请求数。 MaxCalls 参数仅适用于自动侦听接口,在非自动侦听接口上将被忽略。 RPC 运行时库将尽最大努力确保服务器不允许的并发调用请求数不超过 MaxCalls 中指定的调用数。 实际数字可能更大,并且可能因每个协议序列而异。

其他接口上的调用受 RpcServerListen 函数调用中指定的进程范围 MaxCalls 参数的值控制。

如果不考虑并发调用数,则可以使用 RPC_C_LISTEN_MAX_CALLS_DEFAULT 指定默认值,从而略微提高服务器端性能。 这样做可以缓解 RPC 运行时环境强制实施不必要的限制。

[in] MaxRpcSize

传入数据块的最大大小(以字节为单位)。 此参数可用于帮助防止恶意拒绝服务攻击。 如果远程过程调用的数据块大于 MaxRpcSize,则 RPC 运行时库会拒绝该调用,并向客户端发送RPC_S_ACCESS_DENIED错误。 为此参数指定 (无符号 int) –1 的值将删除传入数据块的大小限制。 此参数对通过 ncalrpc 协议进行的调用没有影响。

[in, optional] IfCallback

安全回调函数,或 NULL 表示无回调。 每个已注册的接口可以具有不同的回调函数。 请参阅 RpcServerRegisterIf2 上的备注。

[in, optional] SecurityDescriptor

用于访问 RPC 接口的安全描述符。 每个已注册的接口可以具有不同的安全描述符。

返回值

成功后返回RPC_S_OK。

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

注解

RpcServerRegisterIf3 函数的参数和效果扩展了 RpcServerRegisterIf2 函数的参数和效果。 区别在于能够指定安全描述符来控制对已注册 RPC 接口的访问。

如果同时指定了 SecurityDescriptorIfCallbackFn,则将首先检查 SecurityDescriptor 中的安全描述符,并在访问检查安全描述符传递后调用 IfCallbackFn 中的回调。

调用 RpcServerRegisterIf3SecurityDescriptor 设置为 NULL,或调用 RpcServerRegisterIf、RpcServerRegisterIf2RpcServerRegisterIfEx 注册接口时,将使用默认的安全描述符。 如果 RPC 服务器不是 AppContainer 进程,则默认安全描述符不允许从任何 AppContainer 进程访问接口。 如果 RPC 服务器是 AppContainer 进程,则默认安全描述符不允许从其他 AppContainer 进程中的任何进程访问接口。 默认安全描述符将允许从正常进程(包括低完整性进程)进行访问。

要求

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

另请参阅

注册接口

RpcGetAuthorizationContextForClient

RpcServerRegisterIf

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx