Функция RpcNsBindingExportA (rpcnsi.h)
Функция RpcNsBindingExport устанавливает запись службы имен— базы данных с несколькими дескрипторами привязки и несколькими объектами для сервера.
Синтаксис
RPC_STATUS RpcNsBindingExportA(
unsigned long EntryNameSyntax,
RPC_CSTR EntryName,
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVec,
UUID_VECTOR *ObjectUuidVec
);
Параметры
EntryNameSyntax
Синтаксис EntryName.
Чтобы использовать синтаксис, указанный в записи значения реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax, укажите значение RPC_C_NS_SYNTAX_DEFAULT.
EntryName
Указатель на имя записи, в которую экспортируются дескрипторы привязки и идентификаторы UUID объектов. Нельзя указать пустую или пустую строку. Клиент и сервер должны использовать одно и то же имя записи.
IfSpec
Структура данных, созданная заглушками, указывающая интерфейс для экспорта. Значение NULL указывает, что нет дескрипторов привязки для экспорта (экспортируются только идентификаторы UUID объектов) и BindingVec игнорируется.
BindingVec
Указатель на привязки сервера для экспорта. Значение NULL указывает на отсутствие дескрипторов привязки для экспорта (экспортируются только идентификаторы UUID объектов).
ObjectUuidVec
Указатель на вектор UUID объектов, предлагаемых сервером. Серверное приложение создает этот вектор. Значение NULL указывает, что для экспорта объектов нет идентификаторов UUID объекта (экспортируются только дескрипторы привязки).
Возвращаемое значение
Ценность | Значение |
---|---|
|
Вызов выполнен успешно. |
|
Не было ничего, чтобы экспортировать. |
|
Дескриптор привязки недопустим. |
|
Это был неправильный вид привязки для операции. |
|
Недопустимый синтаксис имени. |
|
Синтаксис имени не поддерживается. |
|
Имя является неполным. |
|
Нет привилегий для операции name-service. |
|
Служба имен недоступна. |
Замечания
Функция RpcNsBindingExport позволяет серверу приложению публично предлагать интерфейс в базе данных службы имен для использования любым клиентским приложением.
В действии с Windows 2000 среда выполнения RPC использует Active Directory в качестве базы данных службы имен. Это означает, что авторизованные экспортированные записи сохраняются в службе имен и видны даже после перезагрузки. Несанкционированные экспорты не сохраняются. Дополнительные сведения об авторизации и списках управления доступом см. в разделе " Безопасность" пакета SDK для платформы.
Чтобы экспортировать интерфейс, серверное приложение вызывает подпрограмму RpcNsBindingExport
Сервер может экспортировать интерфейсы и объекты в одном вызове RpcNsBindingExportили экспортировать их отдельно. Если запись базы данных службы имен, указанная EntryName, не существует, RpcNsBindingExport пытается создать ее. В этом случае серверное приложение должно иметь права на создание записи. Помимо вызова RpcNsBindingExport, сервер, вызывающий RpcServerUseAllProtseqs или функцию RpcServerUseProtseq, также необходимо зарегистрировать в локальной базе данных карты конечных точек путем вызова RpcEpRegister или RpcEpRegisterNoReplace.
Сервер не требуется для экспорта любого из его интерфейсов в базу данных службы имен. Если сервер не экспортирует, только клиенты, которые частно знают, что сведения о привязке сервера могут получить доступ к его интерфейсам. Например, клиент с информацией, необходимой для создания строковой привязки, может вызывать RpcBindingFromStringBindingBinding для создания дескриптора привязки для выполнения удаленных вызовов процедур к серверу.
Перед вызовом RpcNsBindingExportсервер должен выполнить следующие действия:
- Зарегистрируйте одну или несколько последовательностей протоколов в локальной библиотеке времени выполнения RPC, вызвав одну из следующих функций:
- Получите список привязок сервера, вызвав функцию RpcServerInqBindings.
Если сервер экспортируется в одну и ту же запись базы данных службы имен несколько раз, второй и последующий вызовы RpcNsBindingExport добавить сведения о привязке и идентификаторы объектов, если эти данные отличаются от данных привязки, уже в записи сервера. Существующие данные не удаляются из записи.
Чтобы удалить дескриптора привязки и UUID объектов из базы данных службы имен, серверное приложение вызывает функцию RpcNsBindingUnexport.
Запись сервера должна иметь по крайней мере один дескриптор привязки. В результате экспорт только идентификаторов UUID в не имеющуюся запись не действует, и отмена экспорта всех дескрипторов привязки удаляет запись.
Заметка
Заголовок rpcnsi.h определяет RpcNsBindingExport как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | rpcnsi.h (include Rpc.h) |
библиотеки |
Rpcns4.lib |
DLL | Rpcns4.dll |