rpcEpRegister 函数 (rpcdce.h)

RpcEpRegister 函数在本地终结点映射数据库中添加或替换服务器地址信息。

语法

RPC_STATUS RpcEpRegister(
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVector,
  UUID_VECTOR        *UuidVector,
  RPC_CSTR           Annotation
);

参数

IfSpec

用于向本地终结点映射数据库注册的接口。

BindingVector

指向绑定句柄向量的指针,服务器可通过该向量接收远程过程调用。

UuidVector

指向服务器提供的对象 UUID 矢量的指针。 服务器应用程序构造此向量。null 参数值指示没有要注册的对象 UUID。

Annotation

指向应用于添加到本地终结点映射数据库的每个跨积元素的字符串注释的指针。 字符串长度最多为 64 个字符,包括 null 终止字符。 如果没有批注字符串,请指定 null 值或以 null 结尾的字符串 (“\0”) 。

注释字符串仅由应用程序用于信息。 RPC 不使用此字符串来确定客户端与哪个服务器实例通信,也不用于枚举终结点映射数据库中的元素。

返回值

含义
RPC_S_OK
调用成功。
RPC_S_NO_BINDINGS
无绑定。
RPC_S_INVALID_BINDING
绑定句柄无效。
RPC_S_WRONG_KIND_OF_BINDING
这是操作的错误绑定类型。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

RpcEpRegister 函数添加或替换本地主机的终结点映射数据库中的条目。 对于与提供的接口规范、绑定句柄和对象 UUID 匹配的现有数据库条目,此函数会将条目的终结点替换为提供的绑定句柄中的终结点。

服务器可以使用 RpcEpRegisterRpcEpRegisterNoReplace 在终结点映射器数据库中注册条目。 在 Windows 2000 之前,有两个函数可用于使服务器覆盖终结点映射器数据库中的过时条目,这些条目与以前不再运行的服务器实例相比。 一旦服务器停止运行,终结点映射器数据库就会自动删除服务器实例注册的条目。 但是,出于安全目的,不允许服务器替换另一个服务器的终结点映射器条目。 因此, RpcEpRegisterRpcEpRegisterNoReplace 执行的功能大致相同。

服务器应用程序调用 RpcEpRegister 来注册通过调用以下任何函数指定的终结点:

如果服务器还导出到 name-service 数据库,则服务器将使用调用 RpcNsBindingExport 函数时使用的相同 IfSpecBindingVectorUuidVector 值调用 RpcEpRegister

如果在未指定终结点的情况下使用协议序列,则 RPC 运行时库将自动生成动态终结点。 在这种情况下,服务器可以调用 RpcServerInqBindings ,然后调用 RpcEpRegister ,使自身可供多个客户端使用。 否则,只有为其启动服务器的客户端才知道自动启动的服务器。添加到终结点映射数据库的每个元素在逻辑上都包含以下内容:

  • 接口 UUID
  • 接口版本 (主要和次要)
  • 绑定句柄
  • 对象 UUID (可选)
  • 注释 (可选)
RpcEpRegisterIfSpecBindingVectorUuidVector 参数创建一个跨积,并将跨产品中的每个元素作为终结点映射数据库中的单独注册添加。

要求

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

另请参阅

RpcBindingFromStringBinding

RpcEpRegisterNoReplace

RpcEpUnregister

RpcNsBindingExport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf