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


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

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

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

Синтаксис

RPC_STATUS RpcNsBindingUnexportA(
  unsigned long EntryNameSyntax,
  RPC_CSTR      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
Запись name-service не найдена.
RPC_S_NAME_SERVICE_UNAVAILABLE
Служба имен недоступна.
RPC_S_INTERFACE_NOT_FOUND
Интерфейс не найден.
RPC_S_NOT_ALL_OBJS_UNEXPORTED
Не все объекты неэкспортированы.
 
Примечание Список допустимых кодов ошибок см. в разделе Возвращаемые значения RPC.
 

Комментарии

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

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

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

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

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

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

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

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

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

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

Примечание

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

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header rpcnsi.h (включая Rpc.h)
Библиотека Rpcns4.lib
DLL Rpcns4.dll

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

RpcEpUnregister

RpcNsBindingExport