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 不使用此字符串来确定客户端与哪个服务器实例通信,也不用于枚举终结点映射数据库中的元素。
返回值
值 | 含义 |
---|---|
|
调用成功。 |
|
无绑定。 |
|
绑定句柄无效。 |
|
这是操作的错误绑定类型。 |
注解
RpcEpRegister 函数添加或替换本地主机的终结点映射数据库中的条目。 对于与提供的接口规范、绑定句柄和对象 UUID 匹配的现有数据库条目,此函数会将条目的终结点替换为提供的绑定句柄中的终结点。
服务器可以使用 RpcEpRegister 和 RpcEpRegisterNoReplace 在终结点映射器数据库中注册条目。 在 Windows 2000 之前,有两个函数可用于使服务器覆盖终结点映射器数据库中的过时条目,这些条目与以前不再运行的服务器实例相比。 一旦服务器停止运行,终结点映射器数据库就会自动删除服务器实例注册的条目。 但是,出于安全目的,不允许服务器替换另一个服务器的终结点映射器条目。 因此, RpcEpRegister 和 RpcEpRegisterNoReplace 执行的功能大致相同。
服务器应用程序调用 RpcEpRegister 来注册通过调用以下任何函数指定的终结点:
- RpcServerUseAllProtseqs
- RpcServerUseProtseq
- RpcServerUseProtseqEp
- RpcServerUseAllProtseqsIf
- RpcServerUseProtseqIf
如果在未指定终结点的情况下使用协议序列,则 RPC 运行时库将自动生成动态终结点。 在这种情况下,服务器可以调用 RpcServerInqBindings ,然后调用 RpcEpRegister ,使自身可供多个客户端使用。 否则,只有为其启动服务器的客户端才知道自动启动的服务器。添加到终结点映射数据库的每个元素在逻辑上都包含以下内容:
- 接口 UUID
- 接口版本 (主要和次要)
- 绑定句柄
- 对象 UUID (可选)
- 注释 (可选)
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | rpcdce.h (包括 Rpc.h) |
Library | Rpcrt4.lib |
DLL | Rpcrt4.dll |