RpcNsBindingImportNext 函数 (rpcnsi.h)
RpcNsBindingImportNext 函数查找 (接口,还可以从名称服务数据库) 查找对象,并返回兼容服务器的绑定句柄(如果找到)。
语法
RPC_STATUS RpcNsBindingImportNext(
RPC_NS_HANDLE ImportContext,
RPC_BINDING_HANDLE *Binding
);
parameters
ImportContext
从 RpcNsBindingImportBegin 函数返回的名称服务句柄。
Binding
返回指向服务器与客户端兼容的服务器绑定句柄的指针。
返回值
值 | 含义 |
---|---|
|
调用成功。 |
|
不再有绑定。 |
|
名称服务不可用。 |
注解
RpcNsBindingImportNext 函数返回一个客户端兼容的服务器绑定句柄,该服务器提供由 RpcNsBindingImportBegin 函数中的 IfSpec 和 ObjUuid 参数指定的接口和对象 UUID。 函数仅与名称服务数据库通信,不直接与服务器通信。
在 Windows 2000 中,RPC 环境使用 Active Directory 作为其名称服务数据库,运行时环境执行搜索的顺序如下所示:
- 在本地缓存中搜索。 如果没有条目,
- 在 Active Directory 中搜索。 如果没有条目,
- 将广播请求发送到域中的所有其他目录服务。
请注意,如果该条目存在于 Active Directory 中,但没有与条目关联的信息,则运行时环境不会发出此广播请求。
- 如果服务器未导出任何对象 UUID,则返回的绑定句柄将包含一个 nil 对象 UUID。
- 如果服务器导出了一个对象 UUID,则返回的绑定句柄包含该对象 UUID。
- 如果服务器导出了多个对象 UUID,则返回的绑定句柄包含其中一个对象 UUID。 import-next 操作以非确定性方式选择返回的对象 UUID。 因此,可以从单个服务器条目为每个兼容的绑定句柄返回不同的对象 UUID。
每次客户端调用 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 |