Función RpcNsBindingExportA (rpcnsi.h)
La función RpcNsBindingExport establece una entrada de base de datos de servicio de nombres con varios identificadores de enlace y varios objetos para un servidor.
Sintaxis
RPC_STATUS RpcNsBindingExportA(
unsigned long EntryNameSyntax,
RPC_CSTR EntryName,
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVec,
UUID_VECTOR *ObjectUuidVec
);
Parámetros
EntryNameSyntax
Sintaxis de EntryName.
Para usar la sintaxis especificada en la entrada de valor del Registro HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax, proporcione un valor de RPC_C_NS_SYNTAX_DEFAULT.
EntryName
Puntero al nombre de entrada al que se exportan los identificadores de enlace y los UUID de objeto. No se puede proporcionar una cadena nula o vacía. El cliente y el servidor deben usar el mismo nombre de entrada.
IfSpec
Estructura de datos generada por código auxiliar que especifica la interfaz que se va a exportar. Un valor NULL indica que no hay identificadores de enlace para exportar (solo se exportarán los UUID de objeto) y BindingVec se omite.
BindingVec
Puntero a los enlaces de servidor que se van a exportar. Un valor NULL indica que no hay identificadores de enlace para exportar (solo se exportarán los UUID de objeto).
ObjectUuidVec
Puntero a un vector de UUID de objeto ofrecidos por el servidor. La aplicación de servidor construye este vector. Un valor NULL indica que no hay UUID de objeto que se van a exportar (solo se exportarán los identificadores de enlace).
Valor devuelto
Valor | Significado |
---|---|
|
La llamada se realizó correctamente. |
|
No había nada que exportar. |
|
El identificador de enlace no era válido. |
|
Este era el tipo incorrecto de enlace para la operación. |
|
La sintaxis del nombre no es válida. |
|
No se admite la sintaxis de nombre. |
|
El nombre está incompleto. |
|
Sin privilegios para la operación name-service. |
|
El nombre del servicio no está disponible. |
Comentarios
La función RpcNsBindingExport permite que una aplicación de servidor ofrezca públicamente una interfaz en la base de datos name-service para que la use cualquier aplicación cliente.
Efectivo con Windows 2000, el entorno en tiempo de ejecución rpc usa Active Directory como su base de datos de servicio de nombres. Esto significa que las entradas exportadas autorizadas persisten en el servicio de nombres y son visibles incluso después del reinicio. Las exportaciones no autorizadas no persisten. Consulte Access Control en la sección Seguridad del Kit de desarrollo de software (SDK) de plataforma para obtener más información sobre la autorización y las listas de Access Control.
Para exportar una interfaz, la aplicación de servidor llama a la rutina RpcNsBindingExport con una interfaz y el enlace de servidor controla un cliente puede usar para acceder al servidor. Una aplicación de servidor también llama a la función RpcNsBindingExport para ofrecer públicamente los UUID del objeto de recursos que ofrece, si existe, en la base de datos name-service.
Un servidor puede exportar interfaces y objetos en una sola llamada a RpcNsBindingExport, o puede exportarlas por separado. Si la entrada de base de datos name-service especificada por EntryName no existe, RpcNsBindingExport intenta crearla. En este caso, la aplicación de servidor debe tener el privilegio de crear la entrada. Además de llamar a RpcNsBindingExport, un servidor que llamó a la función RpcServerUseAllProtseqs o RpcServerUseProtseq también debe registrarse con la base de datos local endpoint-map llamando a RpcEpRegister o RpcEpRegisterNoReplace.
No es necesario que un servidor exporte ninguna de sus interfaces a la base de datos name-service. Cuando un servidor no exporta, solo los clientes que conocen de forma privada la información de enlace del servidor pueden acceder a sus interfaces. Por ejemplo, un cliente que tenga la información necesaria para construir un enlace de cadena puede llamar a RpcBindingFromStringBinding para crear un identificador de enlace para realizar llamadas de procedimiento remoto a un servidor.
Antes de llamar a RpcNsBindingExport, un servidor debe hacer lo siguiente:
- Registre una o varias secuencias de protocolo con la biblioteca en tiempo de ejecución rpc local llamando a una de las siguientes funciones:
- Obtenga una lista de enlaces de servidor llamando a la función RpcServerInqBindings .
Si un servidor exporta a la misma entrada de base de datos de nombre-servicio varias veces, la segunda y las llamadas posteriores a RpcNsBindingExport agregan la información de enlace y los UUID de objeto cuando esos datos son diferentes de la información de enlace que ya está en la entrada del servidor. Los datos existentes no se quitan de la entrada.
Para quitar identificadores de enlace y UUID de objeto de la base de datos name-service, una aplicación de servidor llama a la función RpcNsBindingUnexport .
Una entrada de servidor debe tener al menos un identificador de enlace para existir. Como resultado, la exportación de solo UUID a una entrada no existente no tiene ningún efecto y al anular la exportación de todos los identificadores de enlace se elimina la entrada.
Nota:
El encabezado rpcnsi.h define RpcNsBindingExport como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | rpcnsi.h (incluya Rpc.h) |
Library | Rpcns4.lib |
Archivo DLL | Rpcns4.dll |