Функция RpcNsBindingUnexportW (rpcnsi.h)
Функция RpcNsBindingUnexport удаляет дескриптор привязки для интерфейса и объектов из записи в базе данных службы имен.
Синтаксис
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 объекта для неэкспорта (только дескриптор привязки не требуется).
Возвращаемое значение
Ценность | Значение |
---|---|
|
Вызов выполнен успешно. |
|
Недопустимый параметр версии. |
|
Недопустимый синтаксис имени. |
|
Синтаксис имени не поддерживается. |
|
Имя является неполным. |
|
Запись службы имен не найдена. |
|
Служба имен недоступна. |
|
Интерфейс не найден. |
|
Не все объекты не поддерживаются. |
Замечания
Функция 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 может стать настолько большим, чтобы быть неуправляемым.
Таким образом, прежде чем вызывать эту функцию, помните, сколько времени ожидается, что сервер будет недоступен, а также тип используемой привязки. Если вы используете статические привязки, зарезервируете эту функцию, если ожидается, что сервер будет недоступен в течение длительного времени, например, когда он окончательно удаляется из службы.
Заметка
Заголовок rpcnsi.h определяет RpcNsBindingUnexport как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | rpcnsi.h (include Rpc.h) |
библиотеки |
Rpcns4.lib |
DLL | Rpcns4.dll |