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


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

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

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

Комментарии

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

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

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

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

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

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

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

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

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

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

Примечание

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

Требования

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

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

RpcEpUnregister

RpcNsBindingExport