Поделиться через


Функция RpcNsBindingImportNext (rpcnsi.h)

Функция RpcNsBindingImportNext ищет интерфейс (и при необходимости объект из базы данных службы имен) и возвращает дескриптор привязки совместимого сервера, если он найден.

Примечание Эта функция не поддерживается в операционных системах Windows Vista и более поздних версий.
 

Синтаксис

RPC_STATUS RpcNsBindingImportNext(
  RPC_NS_HANDLE      ImportContext,
  RPC_BINDING_HANDLE *Binding
);

Параметры

ImportContext

Дескриптор name-service, возвращаемый функцией RpcNsBindingImportBegin .

Binding

Возвращает указатель на совместимый с клиентом дескриптор привязки сервера для сервера.

Возвращаемое значение

Значение Значение
RPC_S_OK
Вызов выполнен успешно.
RPC_S_NO_MORE_BINDINGS
Больше нет привязок.
RPC_S_NAME_SERVICE_UNAVAILABLE
Служба имен недоступна.
 
Примечание Список допустимых кодов ошибок см. в разделе Возвращаемые значения RPC.
 

Комментарии

Функция RpcNsBindingImportNext возвращает один совместимый с клиентом дескриптор привязки сервера для сервера, который предлагает интерфейс и объект UUID, указанные параметрами IfSpec и ObjUuid в функции RpcNsBindingImportBegin . Функция взаимодействует только с базой данных name-service, а не напрямую с серверами.

В windows 2000 среда RPC использует Active Directory в качестве базы данных службы имен и порядок, в котором среда выполнения выполняет поиск, выглядит следующим образом:

  • Выполните поиск в локальном кэше. Если запись отсутствует,
  • Выполните поиск в Active Directory. Если запись отсутствует,
  • Отправлять широковещательные запросы во все другие службы каталогов в домене.

    Обратите внимание, что если запись существует в Active Directory, но с ней нет сведений, среда выполнения не выдает этот широковещательный запрос.

Возвращаемый дескриптор совместимой привязки всегда содержит объект UUID, значение которого зависит от параметра ObjUuid в функции RpcNsBindingImportBegin . Если был указан объект UUID, отличный от NULL , возвращенный дескриптор привязки содержит этот объект UUID. Однако если указан пустой объект UUID или значение NULL , возвращаемый объект UUID является результатом следующих возможностей:
  • Если сервер не экспортировал UUID объекта, возвращенный дескриптор привязки содержит UUID объекта nil.
  • Если сервер экспортировал один объект UUID, возвращенный дескриптор привязки содержит этот объект UUID.
  • Если сервер экспортировал несколько идентификаторов UUID объектов, возвращенный дескриптор привязки содержит один из UID объекта. Операция import-next выбирает возвращенный объект UUID недетерминированным образом. В результате для каждого совместимого дескриптора привязки из одной записи сервера можно вернуть другой объект UUID.
Функция RpcNsBindingImportNext выбирает и возвращает один дескриптор привязки сервера из найденных совместимых дескрипторов привязки. Клиентское приложение может использовать этот дескриптор привязки для попытки удаленного вызова процедуры к серверу. Если клиенту не удается установить связь с сервером, он может снова вызвать RpcNsBindingImportNext .

Каждый раз, когда клиент вызывает 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

См. также раздел

RpcBindingFree

RpcNsBindingImportBegin

RpcNsBindingImportDone

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcNsBindingLookupNext

RpcNsBindingSelect