Функция 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
Указатель на вектор пользовательских идентификаторов объектов, предлагаемых сервером. Серверное приложение создает этот вектор. Значение NULL указывает, что экспортируемых идентификаторов UUID объектов нет (экспортируются только дескрипторы привязки).
Возвращаемое значение
Значение | Значение |
---|---|
|
Вызов выполнен успешно. |
|
Нечего было экспортировать. |
|
Недопустимый дескриптор привязки. |
|
Это была неправильная привязка для операции. |
|
Недопустимый синтаксис имени. |
|
Синтаксис имени не поддерживается. |
|
Имя является неполным. |
|
Нет привилегий для операции службы имен. |
|
Служба имен недоступна. |
Комментарии
Функция RpcNsBindingExport позволяет серверным приложениям общедоступно предлагать интерфейс в базе данных name-service для использования любым клиентским приложением.
В windows 2000 среда выполнения RPC использует Active Directory в качестве базы данных службы имен. Это означает, что авторизованные экспортированные записи сохраняются в службе имен и отображаются даже после перезагрузки. Несанкционированные операции экспорта не сохраняются. Дополнительные сведения об контроль доступа авторизации и списках контроль доступа см. в разделе Безопасность пакета средств разработки программного обеспечения платформы (SDK).
Чтобы экспортировать интерфейс, серверное приложение вызывает подпрограмму RpcNsBindingExport с интерфейсом, и привязка сервера обрабатывает клиент, который может использовать для доступа к серверу. Серверное приложение также вызывает функцию RpcNsBindingExport для общедоступного предложения идентификаторов UUID объектов ресурсов, которые он предлагает, если таковые имеются, в базе данных name-service.
Сервер может экспортировать интерфейсы и объекты в одном вызове RpcNsBindingExport или экспортировать их отдельно. Если запись базы данных name-service, указанная параметром EntryName , не существует, RpcNsBindingExport пытается создать ее. В этом случае серверное приложение должно иметь привилегию для создания записи. Помимо вызова RpcNsBindingExport, сервер, который вызывает функцию RpcServerUseAllProtseqs или RpcServerUseProtseq , также должен зарегистрироваться в локальной базе данных сопоставления конечных точек, вызвав RpcEpRegister или RpcEpRegisterNoReplace.
Серверу не требуется экспортировать интерфейсы в базу данных службы имен. Если сервер не выполняет экспорт, доступ к его интерфейсам могут получить только клиенты, которые в частном порядке знают сведения о привязке сервера. Например, клиент, содержащий сведения, необходимые для создания строковой привязки, может вызвать RpcBindingFromStringBinding, чтобы создать дескриптор привязки для выполнения удаленных вызовов процедур к серверу.
Перед вызовом RpcNsBindingExport сервер должен выполнить следующие действия:
- Зарегистрируйте одну или несколько последовательностей протокола в локальной библиотеке времени выполнения RPC, вызвав одну из следующих функций:
- Получите список привязок сервера, вызвав функцию RpcServerInqBindings .
Если сервер выполняет экспорт в одну и ту же запись базы данных службы имен несколько раз, второй и последующие вызовы RpcNsBindingExport добавляют сведения о привязке и идентификаторы UUID объекта, если эти данные отличаются от данных привязки, уже имеющихся в записи сервера. Существующие данные не удаляются из записи.
Чтобы удалить дескрипторы привязки и пользовательские идентификаторы объектов из базы данных name-service, серверное приложение вызывает функцию RpcNsBindingUnexport .
Запись сервера должна иметь по крайней мере один дескриптор привязки. В результате экспорт только идентификаторов UUID в несуществующую запись не оказывает влияния, а отмена экспорта всех дескрипторов привязки приводит к удалению записи.
Примечание
Заголовок rpcnsi.h определяет RpcNsBindingExport в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | rpcnsi.h (включая Rpc.h) |
Библиотека | Rpcns4.lib |
DLL | Rpcns4.dll |