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


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

Функция RpcNsBindingUnexport удаляет дескриптор привязки для интерфейса и объектов из записи в базе данных службы имен.

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

Синтаксис

RPC_STATUS RpcNsBindingUnexportW(
  unsigned long EntryNameSyntax,
  RPC_WSTR      EntryName,
  RPC_IF_HANDLE IfSpec,
  UUID_VECTOR   *ObjectUuidVec
);

Параметры

EntryNameSyntax

Синтаксис EntryName.

Чтобы использовать синтаксис, указанный в записи значения реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax, укажите значение RPC_C_NS_SYNTAX_DEFAULT.

EntryName

Указатель на имя записи, из которого удаляются дескрипторы привязки и идентификаторы UUID объектов.

IfSpec

Спецификация интерфейса для дескрипторов привязки, которые необходимо удалить из базы данных службы имен. Значение параметра NULL указывает, что не следует откружать какие-либо дескрипторы привязки (только идентификаторы UUID объекта должны быть не включены).

ObjectUuidVec

Указатель на вектор UUID объекта, который сервер больше не хочет предложить. Приложение создает этот вектор. Значение NULL указывает, что не существует идентификаторов UUID объекта для неэкспорта (только дескриптор привязки не требуется).

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

Ценность Значение
RPC_S_OK
Вызов выполнен успешно.
RPC_S_INVALID_VERS_OPTION
Недопустимый параметр версии.
RPC_S_INVALID_NAME_SYNTAX
Недопустимый синтаксис имени.
RPC_S_UNSUPPORTED_NAME_SYNTAX
Синтаксис имени не поддерживается.
RPC_S_INCOMPLETE_NAME
Имя является неполным.
RPC_S_ENTRY_NOT_FOUND
Запись службы имен не найдена.
RPC_S_NAME_SERVICE_UNAVAILABLE
Служба имен недоступна.
RPC_S_INTERFACE_NOT_FOUND
Интерфейс не найден.
RPC_S_NOT_ALL_OBJS_UNEXPORTED
Не все объекты не поддерживаются.
 
Примечание Список допустимых кодов ошибок см. в разделе возвращаемых значений RPC.
 

Замечания

Функция RpcNsBindingUnexport позволяет серверу приложению удалить дескриптора привязки и идентификаторы UUID ресурсов из записи базы данных службы имен. Серверное приложение может не экспортировать указанный интерфейс и объекты в одном вызове RpcNsBindingUnexport, или же он может отсоединить их отдельно. Только дескриптор привязки, соответствующий интерфейсу UUID, и номера версий основного и дополнительного интерфейса, найденные в параметре IfSpec, не поддерживаются. Используйте функцию RpcNsMgmtBindingUnexport, чтобы удалить несколько версий интерфейса.

В действии с Windows 2000 среда выполнения RPC использует Active Directory в качестве базы данных службы имен. Это означает, что авторизованные неподдерживаемые записи будут удалены как из локального кэша, так и из Active Directory. Неавторизованные неэкспорты будут удалены только из локального кэша. Дополнительные сведения об авторизации и списках управления доступом см. в разделе " Безопасность" пакета SDK для платформы.

Если RpcNsBindingUnexport не находит никаких дескрипторов привязки для указанного интерфейса, функция возвращает код состояния RPC_S_INTERFACE_NOT_FOUND и не отменяет отображение идентификаторов UUID объекта, если они были указаны.

Если один или несколько дескрипторов привязки для указанного интерфейса найдены и не поддерживаются без ошибок, RpcNsBindingUnexport отменяет отображение указанных объектов UUID, если таковые имеются.

Если ни один из указанных объектов UUID не найден, RpcNsBindingUnexport возвращает код состояния RPC_S_NOT_ALL_OBJS_UNEXPORTED.

Помимо вызова RpcNsBindingUnexport, сервер также должен вызвать функцию RpcEpUnregister, чтобы отменить регистрацию конечных точек, которые сервер ранее зарегистрирован в локальной базе данных карты конечных точек.

После создания запись сервера сохраняется, даже если все дескриптора привязки и UUID удаляются. Запись сервера должна иметь по крайней мере один дескриптор привязки. В результате экспорт только идентификаторов UUID в неисправную запись не действует, и отменяет экспорт всех дескрипторов привязки, удаляет запись.

Используйте RpcNsBindingUnexport разумно. Чтобы сохранить автоматически активированный сервер, необходимо оставить его дескриптор привязки в базе данных службы имен между временем активации процессов сервера. Однако при использовании динамических привязок, если не указать дескриптор привязки, Active Directory может стать настолько большим, чтобы быть неуправляемым.

Таким образом, прежде чем вызывать эту функцию, помните, сколько времени ожидается, что сервер будет недоступен, а также тип используемой привязки. Если вы используете статические привязки, зарезервируете эту функцию, если ожидается, что сервер будет недоступен в течение длительного времени, например, когда он окончательно удаляется из службы.

базах данных службы имен предназначены для относительно стабильной работы. В реплицированных базах данных службы имен частое использование RpcNsBindingExport и функции RpcNsBindingUnexport приводит к повторному удалению и замене одной и той же записи и может привести к проблемам с производительностью.
 

Заметка

Заголовок rpcnsi.h определяет RpcNsBindingUnexport как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка rpcnsi.h (include Rpc.h)
библиотеки Rpcns4.lib
DLL Rpcns4.dll

См. также

RpcEpUnregister

RpcNsBindingExport