Función RpcServerUseProtseqEpExW (rpcdce.h)

La función RpcServerUseProtseqEpEx indica a la biblioteca en tiempo de ejecución rpc que use la secuencia de protocolo especificada combinada con el punto de conexión especificado para recibir llamadas a procedimiento remoto.

Sintaxis

RPC_STATUS RpcServerUseProtseqEpExW(
  RPC_WSTR     Protseq,
  unsigned int MaxCalls,
  RPC_WSTR     Endpoint,
  void         *SecurityDescriptor,
  PRPC_POLICY  Policy
);

Parámetros

Protseq

Puntero a un identificador de cadena de la secuencia de protocolo para registrarse con la biblioteca en tiempo de ejecución rpc.

MaxCalls

Longitud de la cola de trabajos pendientes para la secuencia de protocolo ncacn_ip_tcp . Todas las demás secuencias de protocolo omiten este parámetro. Use RPC_C_PROTSEQ_MAX_REQS_DEFAULT para especificar el valor predeterminado. Vea la sección Comentarios.

Endpoint

Puntero a la información de dirección del punto de conexión que se va a usar para crear un enlace para la secuencia de protocolo especificada por Protseq.

SecurityDescriptor

Puntero a un parámetro opcional proporcionado para el subsistema de seguridad. Solo se usa para secuencias de protocolo ncacn_np y ncalrpc . Todas las demás secuencias de protocolo omiten este parámetro. No se recomienda usar un descriptor de seguridad en el punto de conexión para proteger un servidor. Este parámetro no aparece en la especificación DCE de esta API.

Policy

Puntero a la estructura RPC_POLICY , que contiene marcas que establecen atributos específicos del transporte. En el caso del transporte ncadg_mq , estas marcas especifican las propiedades de la cola de recepción del proceso del servidor. En el caso de los transportes de ncacn_ip_tcp o ncadg_ip_udp , estas marcas restringen la asignación de puertos para puertos dinámicos y permiten que los equipos de host múltiple se enlacen selectivamente a las tarjetas de interfaz de red.

La configuración de marca en el campo Directiva solo es efectiva cuando las secuencias de protocolo de ncacn_ip_tcp, ncadg_ip_udp o ncadg_mq están en uso. Para todas las demás secuencias de protocolo, el tiempo de ejecución rpc omite estos valores.

Nota Las partes de la directiva asociadas a los puntos de conexión dinámicos se omiten cuando se llama a la función RpcServerUseProtseqEpEx, ya que el puerto se especifica en el propio punto de conexión.
 

Valor devuelto

Valor Significado
RPC_S_OK
La llamada se realizó correctamente.
RPC_S_PROTSEQ_NOT_SUPPORTED
La secuencia de protocolos no se admite en este host.
RPC_S_INVALID_RPC_PROTSEQ
La secuencia de protocolo no es válida.
RPC_S_INVALID_ENDPOINT_FORMAT
El formato del punto de conexión no es válido.
RPC_S_OUT_OF_MEMORY
El sistema está sin memoria.
RPC_S_DUPLICATE_ENDPOINT
El punto de conexión es un duplicado.
RPC_S_INVALID_SECURITY_DESC
El descriptor de seguridad no es válido.
 
Nota Para obtener una lista de códigos de error válidos, vea Rpc Return Values.
 

Comentarios

Los parámetros y efectos de RpcServerUseProtseqEpEx sumen los de RpcServerUseProtseqEp. La diferencia es el parámetro Policy , que permite establecer directivas específicas en los puntos de conexión. Si se establece el campo NICFlags de la estructura de RPC_POLICY en cero, esta función extendida equivale al RpcServerUseProtseqEp original cuando se usa con los transportes de ncacn_ip_tcp o ncadg_ip_udp .

Una aplicación de servidor llama a RpcServerUseProtseqEpEx para registrar una secuencia de protocolo con la biblioteca en tiempo de ejecución rpc. Con cada registro de secuencia de protocolo, RpcServerUseProtseqEpEx incluye la información de dirección del punto de conexión especificada.

Para recibir solicitudes de llamada a procedimiento remoto, un servidor debe registrar al menos una secuencia de protocolo con la biblioteca en tiempo de ejecución rpc. Una aplicación de servidor puede llamar a esta rutina muchas veces para registrar secuencias de protocolo y puntos de conexión adicionales. Para cada secuencia de protocolo registrada por un servidor, la biblioteca en tiempo de ejecución rpc crea uno o varios puntos de conexión a través de los cuales el servidor recibe solicitudes de llamada a procedimiento remoto. La biblioteca en tiempo de ejecución rpc crea diferentes puntos de conexión para cada secuencia de protocolo. Sin embargo, cada interfaz del proceso es accesible a través de cualquier punto de conexión. Para obtener más información, vea Escribir un cliente RPC seguro o un servidor.

Para MaxCalls, el valor proporcionado por la aplicación es solo una sugerencia. El tiempo de ejecución de RPC o el proveedor de Windows Sockets pueden invalidar el valor. Por ejemplo, en Windows XP o Windows 2000 Professional, el valor está limitado a 5. Los valores mayores que 5 se omiten y 5 se usan en su lugar. En Windows Server 2003 y Windows 2000 Server, se respetará el valor.

Las aplicaciones deben tener cuidado de pasar valores razonables en MaxCalls. Los valores grandes de Server, Advanced Server o Datacenter Server pueden hacer que se use una gran cantidad de memoria de grupo no paginada. El uso de un valor demasiado pequeño también es favorable, ya que puede dar lugar a que el RST TCP cumpla los paquetes TCP SYN desde el servidor si se agota la cola de trabajos pendientes. Un desarrollador de aplicaciones debe equilibrar la superficie de memoria frente a los requisitos de escalabilidad al determinar el valor adecuado para MaxCalls.

Cuando el equipo está configurado para usar el enlace selectivo, la devolución correcta no garantiza que el servidor haya creado puntos de conexión para todas las interfaces de red presentes en el equipo. Es posible que el tiempo de ejecución de RPC no escuche en algunas interfaces de red en función de la configuración de enlace selectivo. Además, si una interfaz aún no ha recibido una dirección IP mediante DHCP, el servidor RPC no escucha en la interfaz de red hasta que se le asigne una dirección DHCP. Una devolución correcta implica que el servidor está escuchando en al menos una interfaz de red; la lista completa de los identificadores de enlace sobre los que se pueden recibir llamadas a procedimiento remoto se puede obtener con una llamada a la función RpcServerInqBindings.

Para obtener más información, vea Enlace del lado servidor, Enlace de cadenas, Configuración del Registro para asignaciones de puertos y enlace selectivo, y Rpc Message Queue QueueIng y las páginas de referencia MIDL yncadg_mq.

Nota

El encabezado rpcdce.h define RpcServerUseProtseqEpEx 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

Requisito Value
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 rpcdce.h (include Rpc.h)
Library Rpcrt4.lib
Archivo DLL Rpcrt4.dll

Consulte también

RPC_POLICY

RpcServerUseAllProtseqsEx

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx

Escritura de un cliente o servidor RPC seguro