rpcNsBindingExportA 函数 (rpcnsi.h)
RpcNsBindingExport 函数使用服务器的多个绑定句柄和多个对象建立名称服务数据库条目。
语法
RPC_STATUS RpcNsBindingExportA(
unsigned long EntryNameSyntax,
RPC_CSTR EntryName,
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVec,
UUID_VECTOR *ObjectUuidVec
);
parameters
EntryNameSyntax
EntryName 的语法。
若要使用注册表值项 HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax中指定的语法,请提供值 RPC_C_NS_SYNTAX_DEFAULT。
EntryName
指向绑定句柄和对象 UUID 导出到的条目名称的指针。 不能提供 null 或空字符串。 客户端和服务器必须使用相同的条目名称。
IfSpec
存根生成的数据结构,指定要导出的接口。 null 值指示没有绑定句柄可导出 (仅导出对象 UUID) 且忽略 BindingVec 。
BindingVec
指向要导出的服务器绑定的指针。 null 值指示没有绑定句柄可导出 (仅导出对象 UUID) 。
ObjectUuidVec
指向服务器提供的对象 UUID 矢量的指针。 服务器应用程序构造此向量。 null 值指示没有要导出的对象 UUID (只有绑定句柄要导出) 。
返回值
值 | 含义 |
---|---|
|
调用成功。 |
|
没有什么可导出的。 |
|
绑定句柄无效。 |
|
这是操作的错误绑定类型。 |
|
名称语法无效。 |
|
不支持名称语法。 |
|
名称不完整。 |
|
没有名称服务操作的权限。 |
|
名称服务不可用。 |
注解
RpcNsBindingExport 函数允许服务器应用程序在名称服务数据库中公开提供接口供任何客户端应用程序使用。
在 Windows 2000 中,RPC 运行时环境使用 Active Directory 作为其名称服务数据库。 这意味着,经过授权的导出条目保留在名称服务中,即使在重新启动后也可见。 未经授权的导出不会保留。 有关授权和访问控制列表的详细信息,请参阅平台软件开发工具包 (SDK) 的“安全性”部分中的访问控制。
为了导出接口,服务器应用程序使用 接口调用 RpcNsBindingExport 例程,服务器绑定处理客户端可用于访问服务器。 服务器应用程序还会调用 RpcNsBindingExport 函数来公开提供对象 UUID (资源 () 它在名称服务数据库中提供(如果有)的资源) 。
服务器可以在对 RpcNsBindingExport 的单个调用中导出接口和对象,也可以单独导出它们。如果 EntryName 指定的 name-service 数据库条目不存在, RpcNsBindingExport 会尝试创建它。 在这种情况下,服务器应用程序必须具有创建条目的权限。除了调用 RpcNsBindingExport 外,调用 RpcServerUseAllProtseqs 或 RpcServerUseProtseq 函数的服务器还必须通过调用 RpcEpRegister 或 RpcEpRegisterNoReplace 向本地终结点映射数据库注册。
服务器不需要将其任何接口导出到名称服务数据库。 当服务器不导出时,只有私下知道该服务器的绑定信息的客户端才能访问其接口。 例如,具有构造字符串绑定所需信息的客户端可以调用 RpcBindingFromStringBinding 来创建绑定句柄,以便对服务器进行远程过程调用。
在调用 RpcNsBindingExport 之前,服务器必须执行以下操作:
- 通过调用以下函数之一,将一个或多个协议序列注册到本地 RPC 运行时库:
- 通过调用 RpcServerInqBindings 函数获取服务器绑定列表。
如果服务器多次导出到同一名称服务数据库条目,则当数据与服务器条目中已有的绑定信息不同时,对 RpcNsBindingExport 的第二次和后续调用会添加绑定信息和对象 UUID。 不会从条目中删除现有数据。
若要从名称服务数据库中删除绑定句柄和对象 UUID,服务器应用程序会调用 RpcNsBindingUnexport 函数。
服务器条目必须至少有一个绑定句柄才能存在。 因此,仅将 UUID 导出到不存在的条目不起作用,取消导出所有绑定句柄会删除该条目。
注意
rpcnsi.h 标头将 RpcNsBindingExport 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | rpcnsi.h (包括 Rpc.h) |
Library | Rpcns4.lib |
DLL | Rpcns4.dll |