RpcNsBindingExportW 函数 (rpcnsi.h)

RpcNsBindingExport 函数为服务器建立名称服务数据库条目,其中包含多个绑定句柄和多个对象。

注意 Windows Vista 及更高版本的操作系统不支持此功能。
 

语法

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(仅导出绑定句柄)。

返回值

价值 意义
RPC_S_OK
调用成功。
RPC_S_NOTHING_TO_EXPORT
没有可导出的。
RPC_S_INVALID_BINDING
绑定句柄无效。
RPC_S_WRONG_KIND_OF_BINDING
这是操作的错误绑定类型。
RPC_S_INVALID_NAME_SYNTAX
名称语法无效。
RPC_S_UNSUPPORTED_NAME_SYNTAX
不支持名称语法。
RPC_S_INCOMPLETE_NAME
名称不完整。
RPC_S_NO_NS_PRIVILEGE
名称服务操作没有特权。
RPC_S_NAME_SERVICE_UNAVAILABLE
名称服务不可用。
 
注释 有关有效错误代码的列表,请参阅 RPC 返回值
 

言论

RpcNsBindingExport 函数允许服务器应用程序在名称服务数据库中公开提供接口供任何客户端应用程序使用。

在 Windows 2000 中生效,RPC 运行时环境使用 Active Directory 作为其名称服务数据库。 这意味着授权导出的条目将保留在名称服务中,即使在重新启动后也可见。 未授权的导出不会保留。 有关授权和访问控制列表的详细信息,请参阅平台软件开发工具包(SDK)安全部分中 访问控制

若要导出接口,服务器应用程序使用接口调用 RpcNsBindingExport 例程,服务器绑定处理客户端可用于访问服务器。 服务器应用程序还调用 RpcNsBindingExport 函数,以在名称服务数据库中公开提供其提供的资源 UUID(s) 对象(如果有)。

服务器可以在单个调用中导出接口和对象,RpcNsBindingExport,也可以单独导出它们。如果 EntryName 指定的名称服务数据库条目不存在,RpcNsBindingExport 尝试创建它。 在这种情况下,服务器应用程序必须具有创建条目的权限。除了调用 RpcNsBindingExport之外,调用 RpcServerUseAllProtseqsRpcServerUseProtseq 函数的服务器还必须通过调用 RpcEpRegisterRpcEpRegisterNoReplace注册到本地终结点映射数据库。

服务器不需要将其任何接口导出到名称服务数据库。 当服务器不导出时,只有私下知道服务器的绑定信息的客户端才能访问其接口。 例如,具有构造字符串绑定所需的信息的客户端可以调用 RpcBindingFromStringBinding 来创建绑定句柄,以便对服务器进行远程过程调用。

在调用 RpcNsBindingExport之前,服务器必须执行以下操作:

RpcServerInqBindings 函数返回的向量将成为 RpcNsBindingExportBinding 参数。 若要防止导出绑定,请将所选向量元素设置为 null 值。

如果服务器多次导出到同一名称服务数据库条目,则对 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

另请参阅

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf