RpcNsBindingImportNext 函数 (rpcnsi.h)

RpcNsBindingImportNext 函数查找 (接口,还可以从名称服务数据库) 查找对象,并返回兼容服务器的绑定句柄(如果找到)。

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

语法

RPC_STATUS RpcNsBindingImportNext(
  RPC_NS_HANDLE      ImportContext,
  RPC_BINDING_HANDLE *Binding
);

parameters

ImportContext

RpcNsBindingImportBegin 函数返回的名称服务句柄。

Binding

返回指向服务器与客户端兼容的服务器绑定句柄的指针。

返回值

含义
RPC_S_OK
调用成功。
RPC_S_NO_MORE_BINDINGS
不再有绑定。
RPC_S_NAME_SERVICE_UNAVAILABLE
名称服务不可用。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

RpcNsBindingImportNext 函数返回一个客户端兼容的服务器绑定句柄,该服务器提供由 RpcNsBindingImportBegin 函数中的 IfSpecObjUuid 参数指定的接口和对象 UUID。 函数仅与名称服务数据库通信,不直接与服务器通信。

在 Windows 2000 中,RPC 环境使用 Active Directory 作为其名称服务数据库,运行时环境执行搜索的顺序如下所示:

  • 在本地缓存中搜索。 如果没有条目,
  • 在 Active Directory 中搜索。 如果没有条目,
  • 将广播请求发送到域中的所有其他目录服务。

    请注意,如果该条目存在于 Active Directory 中,但没有与条目关联的信息,则运行时环境不会发出此广播请求。

返回的兼容绑定句柄始终包含对象 UUID,其值取决于 RpcNsBindingImportBegin 函数中的 ObjUuid 参数。 如果指定了非 null 对象 UUID,则返回的绑定句柄将包含该对象 UUID。 但是,如果指定了 null 对象 UUID 或 null 值,则返回的对象 UUID 是以下可能性的结果:
  • 如果服务器未导出任何对象 UUID,则返回的绑定句柄将包含一个 nil 对象 UUID。
  • 如果服务器导出了一个对象 UUID,则返回的绑定句柄包含该对象 UUID。
  • 如果服务器导出了多个对象 UUID,则返回的绑定句柄包含其中一个对象 UUID。 import-next 操作以非确定性方式选择返回的对象 UUID。 因此,可以从单个服务器条目为每个兼容的绑定句柄返回不同的对象 UUID。
RpcNsBindingImportNext 函数从找到的兼容绑定句柄中选择并返回一个服务器绑定句柄。 客户端应用程序可以使用该绑定句柄尝试对服务器进行远程过程调用。 如果客户端无法与服务器建立关系,它可以再次调用 RpcNsBindingImportNext

每次客户端调用 RpcNsBindingImportNext 时,该函数都会返回另一个服务器绑定句柄。 返回的绑定句柄是无序的。 客户端应用程序调用 RpcNsBindingInqEntryName 函数,以获取绑定句柄来自的条目名称中的 name-service 数据库。当搜索到达名称服务数据库的末尾时, RpcNsBindingInqEntryName 返回状态RPC_S_NO_MORE_BINDINGS并返回绑定参数值 NULL

RpcNsBindingImportNext 函数为返回的 Binding 参数引用的数据分配存储。 客户端应用程序完成绑定句柄后,必须调用 RpcBindingFree 才能解除分配存储。 每次调用 RpcNsBindingImportNext 都需要对 RpcBindingFree 的相应调用。

客户端负责调用 RpcNsBindingImportDone 函数,这将删除导入上下文。 客户端还会在调用 RpcNsBindingImportBegin 之前调用 RpcNsBindingImportDone ,以开始对兼容服务器进行新的搜索。 由于每次新搜索返回的绑定句柄的顺序都不同,因此每次运行应用程序时,向应用程序返回绑定句柄的顺序可能不同。

要求

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

请参阅

RpcBindingFree

RpcNsBindingImportBegin

RpcNsBindingImportDone

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcNsBindingLookupNext

RpcNsBindingSelect