RpcNsBindingExportW 函数 (rpcnsi.h)
RpcNsBindingExport 函数为服务器建立名称服务数据库条目,其中包含多个绑定句柄和多个对象。
语法
RPC_STATUS RpcNsBindingExportW(
unsigned long EntryNameSyntax,
RPC_WSTR EntryName,
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVec,
UUID_VECTOR *ObjectUuidVec
);
参数
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(s) 对象(如果有)。
服务器可以在单个调用中导出接口和对象,RpcNsBindingExport,也可以单独导出它们。如果 EntryName 指定的名称服务数据库条目不存在,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 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | rpcnsi.h (包括 Rpc.h) |
库 | Rpcns4.lib |
DLL | Rpcns4.dll |