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.

Nota Esta función no se admite en Windows Vista ni en sistemas operativos posteriores.
 

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
RPC_S_OK
La llamada se realizó correctamente.
RPC_S_NOTHING_TO_EXPORT
No había nada que exportar.
RPC_S_INVALID_BINDING
El identificador de enlace no era válido.
RPC_S_WRONG_KIND_OF_BINDING
Este era el tipo incorrecto de enlace para la operación.
RPC_S_INVALID_NAME_SYNTAX
La sintaxis del nombre no es válida.
RPC_S_UNSUPPORTED_NAME_SYNTAX
No se admite la sintaxis de nombre.
RPC_S_INCOMPLETE_NAME
El nombre está incompleto.
RPC_S_NO_NS_PRIVILEGE
Sin privilegios para la operación name-service.
RPC_S_NAME_SERVICE_UNAVAILABLE
El nombre del servicio no está disponible.
 
Nota Para obtener una lista de códigos de error válidos, vea Rpc Return Values.
 

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:

El vector devuelto de la función RpcServerInqBindings se convierte en el parámetro Binding para RpcNsBindingExport. Para evitar que se exporte un enlace, establezca el elemento vectorial seleccionado en un valor NULL.

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

Consulte también

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf