RpcNsBindingLookupNext 函数 (rpcnsi.h)
RpcNsBindingLookupNext 函数返回指定接口和对象的兼容绑定句柄列表(可选)。
语法
RPC_STATUS RpcNsBindingLookupNext(
RPC_NS_HANDLE LookupContext,
RPC_BINDING_VECTOR **BindingVec
);
参数
LookupContext
从 RpcNsBindingLookupBegin 函数返回的名称服务句柄。
BindingVec
返回指向客户端兼容的服务器绑定句柄向量的指针的地址。
返回值
值 | 含义 |
---|---|
|
调用成功。 |
|
不再绑定。 |
|
名称服务不可用。 |
注解
RpcNsBindingLookupNext 函数返回客户端兼容的服务器绑定句柄的向量,该服务器提供由 RpcNsBindingLookupBegin 函数中的 IfSpec 和 ObjUuid 参数指定的接口和对象 UUID。 (将此与 RpcNsBindingImportNext 进行比较,后者返回单个兼容的服务器绑定句柄。)
RpcNsBindingLookupNext 函数仅与名称服务数据库通信,而不直接与服务器通信。
在 Windows 2000 中,RPC 环境使用 Active Directory 作为其名称服务数据库,运行时环境执行搜索的顺序如下:
- 搜索本地缓存。
- 如果在本地缓存中找不到条目,请搜索该计算机的 Active Directory。
- 如果在本地计算机上找不到条目,请将广播请求发送到域中的所有其他 Active Directory 服务。
请注意,如果该条目存在于 Active Directory 中,但没有与条目关联的信息,则运行时环境不会发出此广播请求。
当 Microsoft Active Directory 是名称服务数据库时, RpcNsBindingLookupNext 仅当给定条目名称为 null 且注册表中 (的默认条目) 未定义或为空时,才会遍历数据库。 此外,由于 Active Directory 中不允许混合条目,函数仅搜索服务器条目名称,而不搜索组或配置文件名称。
当 DCE Cell Directory 服务 (CDS) 是名称服务数据库,并且搜索开始处的条目除了包含组或配置文件名称外还包含绑定句柄时, RpcNsBindingLookupNext 会在搜索组或配置文件之前从 EntryName 返回绑定句柄。 这意味着函数可以在处理组或配置文件的成员之前返回部分完整的向量。
返回的兼容绑定句柄始终包含对象 UUID,其值取决于 RpcNsBindingImportBegin 函数中的 ObjUuid 参数。 如果指定了非空 对象 UUID,则返回的绑定句柄将包含该对象 UUID。 但是,如果指定了 空 对象 UUID 或 null 值,则返回的对象 UUID 是以下可能的结果:
- 如果服务器未导出任何对象 UUID,则返回的绑定句柄包含 nil 对象 UUID。
- 如果服务器导出了一个对象 UUID,则返回的绑定句柄包含该对象 UUID。
- 如果服务器导出了多个对象 UUID,则返回的绑定句柄包含其中一个对象 UUID。 import-next 操作以非确定性方式选择返回的对象 UUID。 因此,可以从单个服务器条目为每个兼容的绑定句柄返回不同的对象 UUID。
客户端应用程序可以使用所选绑定句柄尝试对服务器进行远程过程调用。 如果客户端无法与服务器建立关系,则可以从向量中选择另一个绑定句柄。 使用矢量中的所有绑定句柄后,客户端应用程序将再次调用 RpcNsBindingLookupNext 。
每次客户端调用 RpcNsBindingLookupNext 时,函数都会返回另一个绑定句柄的向量。 每个向量中返回的绑定句柄是无序的。 从对此函数的多次调用返回的向量也是无序的。
客户端调用 RpcNsBindingInqEntryName 函数以获取绑定来自的 name-service 数据库服务器条目名称。
当搜索到达名称服务数据库的末尾时, RpcNsBindingLookupNext 返回状态RPC_S_NO_MORE_BINDINGS,并返回 BINDINGVec 值 NULL。
RpcNsBindingLookupNext 函数为返回的 BindingVec 参数引用的数据分配存储。 客户端应用程序完成向量后,必须调用 RpcBindingVectorFree 函数来解除分配存储。 每次调用 RpcNsBindingLookupNext 都需要对 RpcBindingVectorFree 进行相应的调用。
客户端负责调用 RpcNsBindingLookupDone 函数以删除查找上下文,或者如果希望应用程序启动对兼容服务器的新搜索。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | rpcnsi.h (包括 Rpc.h) |
Library | Rpcns4.lib |
DLL | Rpcns4.dll |