Функция RpcNsBindingImportNext (rpcnsi.h)
Функция RpcNsBindingImportNext ищет интерфейс (и при необходимости объект из базы данных службы имен) и возвращает дескриптор привязки совместимого сервера, если он найден.
Синтаксис
RPC_STATUS RpcNsBindingImportNext(
RPC_NS_HANDLE ImportContext,
RPC_BINDING_HANDLE *Binding
);
Параметры
ImportContext
Дескриптор name-service, возвращаемый функцией RpcNsBindingImportBegin .
Binding
Возвращает указатель на совместимый с клиентом дескриптор привязки сервера для сервера.
Возвращаемое значение
Значение | Значение |
---|---|
|
Вызов выполнен успешно. |
|
Больше нет привязок. |
|
Служба имен недоступна. |
Комментарии
Функция RpcNsBindingImportNext возвращает один совместимый с клиентом дескриптор привязки сервера для сервера, который предлагает интерфейс и объект UUID, указанные параметрами IfSpec и ObjUuid в функции RpcNsBindingImportBegin . Функция взаимодействует только с базой данных name-service, а не напрямую с серверами.
В windows 2000 среда RPC использует Active Directory в качестве базы данных службы имен и порядок, в котором среда выполнения выполняет поиск, выглядит следующим образом:
- Выполните поиск в локальном кэше. Если запись отсутствует,
- Выполните поиск в Active Directory. Если запись отсутствует,
- Отправлять широковещательные запросы во все другие службы каталогов в домене.
Обратите внимание, что если запись существует в Active Directory, но с ней нет сведений, среда выполнения не выдает этот широковещательный запрос.
- Если сервер не экспортировал UUID объекта, возвращенный дескриптор привязки содержит UUID объекта nil.
- Если сервер экспортировал один объект UUID, возвращенный дескриптор привязки содержит этот объект UUID.
- Если сервер экспортировал несколько идентификаторов UUID объектов, возвращенный дескриптор привязки содержит один из UID объекта. Операция import-next выбирает возвращенный объект UUID недетерминированным образом. В результате для каждого совместимого дескриптора привязки из одной записи сервера можно вернуть другой объект UUID.
Каждый раз, когда клиент вызывает RpcNsBindingImportNext, функция возвращает другой дескриптор привязки сервера. Возвращенные дескрипторы привязки не упорядочены. Клиентское приложение вызывает функцию RpcNsBindingInqEntryName , чтобы получить базу данных name-service в имени записи, из которой поступил дескриптор привязки. Когда поиск достигает конца базы данных name-service, RpcNsBindingInqEntryName возвращает состояние RPC_S_NO_MORE_BINDINGS и возвращает значение параметра привязки NULL.
Функция RpcNsBindingImportNext выделяет хранилище для данных, на которые ссылается возвращаемый параметр Binding . Когда клиентское приложение завершает работу с дескриптором привязки, оно должно вызвать RpcBindingFree , чтобы освободить хранилище. Для каждого вызова RpcNsBindingImportNext требуется соответствующий вызов RpcBindingFree.
Клиент отвечает за вызов функции RpcNsBindingImportDone , которая удаляет контекст импорта. Клиент также вызывает RpcNsBindingImportDone перед вызовом RpcNsBindingImportBegin , чтобы начать новый поиск совместимых серверов. Так как порядок возвращаемых дескрипторов привязки отличается для каждого нового поиска, порядок, в котором дескриптора привязки возвращаются в приложение, может отличаться при каждом запуске приложения.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | rpcnsi.h (включая Rpc.h) |
Библиотека | Rpcns4.lib |
DLL | Rpcns4.dll |