Enlace de cadenas
El enlace de cadena es una cadena de caracteres sin signo compuesta de cadenas que representan el UUID del objeto de enlace, la secuencia de protocolo RPC, la dirección de red y las opciones de punto de conexión y punto de conexión.
ObjectUUID@ProtocolSequence:NetworkAddress[Endpoint,Option]
Parámetros
-
ObjectUUID
-
UUID del objeto operado por la llamada a procedimiento remoto. En el servidor, la biblioteca en tiempo de ejecución rpc asigna el tipo de objeto a un vector de punto de entrada del administrador (una matriz de punteros de función) para invocar la rutina de administrador correcta. Para obtener una explicación sobre cómo asignar UUID de objetos a vectores de punto de entrada del administrador, vea Registrar interfaces.
-
ProtocolSequence
-
Cadena de caracteres que representa una combinación válida de un protocolo RPC (como ncacn), un protocolo de transporte (como TCP) y un protocolo de red (como IP). Microsoft RPC admite los siguientes protocolos especificados en Constantes de secuencia de protocolo.
-
NetworkAddress
-
Dirección de red del sistema para recibir llamadas a procedimientos remotos.
Nota:
Las secuencias de protocolo siguientes no se admiten a partir de Windows XP:
El formato y el contenido de la dirección de red dependen de la secuencia de protocolo especificada como se indica a continuación.
Secuencia de protocolos Dirección de red Ejemplos ncacn_nb_tcp Nombre del equipo Myserver ncacn_nb_ipx Nombre del equipo Myserver ncacn_nb_nb Nombre del equipo Myserver ncacn_ip_tcp Dirección de Internet de cuatro octetos o nombre de host. Si se instala la pila de red IPv6, IPv6 es totalmente compatible y también se acepta una dirección IPv6. 128.10.2.30 anynode.microsoft.com ncacn_np Nombre del servidor (las barras diagonales inversas dobles iniciales son opcionales) myserver \\myotherserver ncacn_spx Dirección IPX de Internet o nombre del servidor ~0000000108002B30612C myserver ncacn_dnet_nsp Sintaxis de área y nodo 4.120 ncacn_at_dsp Nombre del equipo, seguido opcionalmente por @ y el nombre de la zona de AppleTalk. El valor predeterminado es @*, la zona del cliente, si no se proporciona ninguna zona. servername@zonename nombreDeServidor ncacn_vns_spp Nombre del servidor de StreetTalk del formulario item@group@organization printserver@sdkdocs@microsoft ncadg_mq Nombre de servidor Myserver ncacn_http Dirección de Internet (nombre descriptivo o de cuatro octetos, o nombre de servidor local 128.10.2.30 somesvr@anywhere.com mylocalsvr ncadg_ip_udp Dirección de Internet de cuatro octetos o nombre de host 128.10.2.30 anynode.microsoft.com ncadg_ipx Dirección IPX de Internet o nombre del servidor ~0000000108002B30612C myserver ncalrpc Nombre de equipo thismachine El campo de dirección de red es opcional. Cuando no se especifica una dirección de red, el enlace de cadena hace referencia al host local. Es posible especificar el nombre del equipo local cuando se usa la secuencia de protocolo ncalrpc , pero hacerlo es completamente innecesario.
-
Extremo
-
Punto de conexión o dirección del proceso para recibir llamadas a procedimientos remotos. Un punto de conexión puede ir precedido por la palabra clave endpoint=. Especificar el punto de conexión es opcional si el servidor ha registrado sus enlaces con el asignador de puntos de conexión. Consulte RpcEpRegister.
El formato y el contenido de un punto de conexión dependen de la secuencia de protocolo especificada, como se muestra en la siguiente tabla de puntos de conexión y opción.
-
Opción
-
Opciones específicas del protocolo. El campo de opción no es obligatorio. Cada opción se especifica mediante un par {name, value} que usa el valor de la opción de nombre= dela opción de sintaxis. Las opciones se definen para cada secuencia de protocolo, como se muestra en la siguiente tabla Endpoint/Option.
Secuencia de protocolos Punto de conexión Ejemplos Nombre de la opción ncacn_nb_tcp Entero entre 1 y 254. Microsoft reserva muchos valores entre 0 y 32. 100 None ncacn_nb_ipx (como se ha indicado anteriormente) (como se ha indicado anteriormente) Ninguna ncacn_nb_nb (como se ha indicado anteriormente) (como se ha indicado anteriormente) Ninguna ncacn_ip_tcp Número de puerto de Internet. 1025 Ninguna ncacn_np Canalización con nombre. El nombre debe comenzar por "\\pipe". \\pipe\\pipename Seguridad ncacn_spx Entero entre 1 y 65535. 5000 Ninguna ncacn_dnet_nsp Número de objeto de la fase IV de DECnet (debe ir precedido por el carácter #) o por el nombre del objeto. mailserver n.º 17 Ninguna ncacn_at_dsp Cadena de caracteres de hasta 22 bytes de longitud. myservicesendpoint Ninguna ncacn_vns_spp Número de puerto SPP de Vines entre 250 y 511. 500 Ninguna ncadg_mq Entero entre 1 y 65535. 5000 Ninguna ncacn_http Número de puerto de Internet. 2215 Nombres de servidor proxy HTTP y RPC, opción HttpConnection ncadg_ip_udp Número de puerto de Internet. 1025 Ninguna ncadg_ipx Entero entre 1 y 65535. 5000 Ninguna ncalrpc Cadena que especifica el nombre de la aplicación o del servicio. La cadena no puede incluir caracteres de barra diagonal inversa. my_printer Seguridad El nombre de la opción HttpConnectionOption , compatible con la secuencia de protocolo ncacn_http, toma el siguiente valor.
Nombre de la opción Value HttpConnectOption Uso deHttpProxy HttpConnectionOption permite dirigir el comportamiento de RPC al realizar conexiones HTTP. El valor UseHttpProxy indica a RPC que enrute su tráfico a través del proxy Http en todo momento, incluido cuando el cliente tiene las opciones de Internet establecidas en Internet Explorer para omitir el servidor proxy para las direcciones locales. Esta opción dirige al cliente a conectarse forzadamente al proxy RPC a través del proxy Http. Esto acelera el tiempo para establecer una conexión, ya que omite cualquier retraso en la búsqueda del servidor RPC directamente antes de usar el proxy HTTP.
Si se usa esta opción HttpConnectionOption e Internet Explorer en el cliente no está configurado para usar ese proxy Http, es posible que se produzca un error en las conexiones con RPC_S_INVALID_NETWORK_OPTIONS.
HttpConnectOption=UseHttpProxy
Para obtener más información sobre HttpConnectionOption, consulte Uso de HTTP como transporte RPC.
El nombre de la opción Seguridad , compatible con las secuencias de protocolo ncalrpc, ncacn_np, ncadg_ip_udp y ncadg_ipx, toma los siguientes valores de opción.
Nombre de la opción Valor de la opción Seguridad {identification | anonymous | impersonation} {dynamic | static} {true | false} Si se especifica el nombre de la opción de seguridad, también se debe proporcionar una entrada de cada uno de los conjuntos de valores de opción de seguridad. Los valores de opción deben estar separados por un carácter de espacio único. Por ejemplo, los siguientes campos Option son válidos:
Security=identification dynamic true Security=impersonation static true
Los valores de opción de seguridad tienen los significados siguientes.
Valor de opción de seguridad Descripción Anónimas El cliente es anónimo para el servidor. Dinámica El servidor ve los cambios en la identidad de seguridad del cliente cuando el servidor usa la seguridad de transporte. Este es el modo predeterminado para la seguridad del nivel de transporte LRPC (ncalrpc) y para la seguridad del nivel de transporte de canalización con nombre local (ncacn_np). False Efectivo = FALSE; todos los valores de privilegios de token, incluidos los establecidos en OFF, se incluyen en el token en el servidor y el servidor puede habilitarlo. Los privilegios son relevantes solo para las llamadas RPC de la misma máquina. Identificación El servidor tiene información sobre el cliente, pero no puede suplantar. Suplantación El servidor puede actuar en nombre del cliente dentro del sistema local (la seguridad de nivel de transporte no admite la delegación). Estática El servidor no ve los cambios en la identidad de seguridad del cliente cuando el servidor usa la seguridad de transporte. Este es el único modo disponible para la seguridad de nivel de transporte de canalización con nombre remoto (ncacn_np). La identidad del autor de la llamada se guarda durante la primera llamada a procedimiento remoto en ese identificador de enlace, no en el momento en que se crea el identificador de enlace. True Efectivo = TRUE; solo la configuración de privilegios de token establecida en ON se incluye en el token en el servidor. El servidor no puede activar los privilegios establecidos en OFF si se usa esta opción. Los privilegios son relevantes solo para las llamadas RPC de la misma máquina. Para obtener más información sobre las opciones de seguridad, Seguridad.
Observaciones
No se permite el espacio en blanco en los enlaces de cadena, excepto cuando lo requiera la sintaxis Option . La configuración predeterminada para los campos NetworkAddress, Endpoint y Option varían según el valor del miembro ProtocolSequence .
Para todos los campos de enlace de cadena, un único carácter de barra diagonal inversa (\) se interpreta como un carácter de escape. Para especificar un solo carácter de barra diagonal inversa literal, debe proporcionar dos caracteres de barra diagonal inversa (\\).
Un enlace de cadena contiene la representación de caracteres de un identificador de enlace y, en ocasiones, partes de un identificador de enlace. Los enlaces de cadena son cómodos para representar partes de un identificador de enlace, pero no se pueden usar para realizar llamadas a procedimientos remotos. Primero deben convertirse en un identificador de enlace llamando a RpcBindingFromStringBinding.
Además, un enlace de cadena no contiene toda la información de un identificador de enlace. Por ejemplo, la información de autenticación, si existe, asociada a un identificador de enlace no se traduce en el enlace de cadena devuelto mediante una llamada a RpcBindingToStringBinding.
Durante el desarrollo de una aplicación distribuida, los servidores pueden comunicar su información de enlace a los clientes mediante enlaces de cadena para establecer una relación de cliente-servidor sin usar la base de datos de mapa de puntos de conexión o la base de datos name-service. Para establecer esta relación, use la función RpcBindingToStringBinding para convertir uno o varios identificadores de enlace de un vector de identificador de enlace a un enlace de cadena y proporcionar el enlace de cadena al cliente.
Ejemplos
A continuación se muestran ejemplos de enlaces de cadena válidos. En estos ejemplos, obj-uuid se usa para mayor comodidad para representar un UUID válido en forma de cadena. En lugar de mostrar el UUID 308FB580-1EB2-11CA-923B-08002B1075A7, los ejemplos muestran obj-uuid.
obj-uuid@ncadg_mq:mymqserver
obj-uuid@ncacn_http:major7.microsoft.com[2225]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
RpcProxy=websvr1.microsoft.com:80]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
RpcProxy=websvr1.microsoft.com:80,HttpConnectOption=UseHttpProxy]
obj-uuid@ncacn_ip_tcp:16.20.16.27[2001]
obj-uuid@ncacn_ip_tcp:16.20.16.27[endpoint=2001]
obj-uuid@ncacn_nb_nb:
obj-uuid@ncacn_nb_nb:[100]
obj-uuid@ncacn_np:
obj-uuid@ncacn_np:[\\pipe\\p3,Security=impersonation static true]
obj-uuid@ncacn_np:\\\\marketing[\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\marketing[endpoint=\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\sales
obj-uuid@ncacn_np:\\\\sales[\\pipe\\p1,Security=identification dynamic true]
obj-uuid@ncalrpc:
obj-uuid@ncalrpc:[object1_name_demonstrating_that_these_can_be_lengthy]
obj-uuid@ncalrpc:[object2_name,Security=anonymous static true]
obj-uuid@ncacn_vns_spp:server@group@org[500]
obj-uuid@ncacn_dnet_nsp:took[elf_server]
obj-uuid@ncacn_dnet_nsp:took[endpoint=elf_server]
obj-uuid@ncadg_ip_udp:128.10.2.30
obj-uuid@ncadg_ip_udp:maryos.microsoft.com[1025]
obj-uuid@ncadg_ipx: ~0000000108002B30612C[5000]
obj-uuid@ncadg_ipx:printserver
obj-uuid@ncacn_spx:annaw[4390]
obj-uuid@ncacn_spx:~0000000108002B30612C