Compartir a través de


Función RpcServerUseAllProtseqsEx (rpcdce.h)

La función RpcServerUseAllProtseqsEx indica a la biblioteca en tiempo de ejecución rpc que use todas las secuencias de protocolo admitidas para recibir llamadas a procedimiento remoto.

Sintaxis

RPC_STATUS RpcServerUseAllProtseqsEx(
  unsigned int MaxCalls,
  void         *SecurityDescriptor,
  PRPC_POLICY  Policy
);

Parámetros

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.

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 de RPC_POLICY , que permite invalidar las directivas predeterminadas para la asignación dinámica de puertos y el enlace a tarjetas de interfaz de red (NIC) en equipos con varios hogares (equipos con varias tarjetas de red).

Valor devuelto

Valor Significado
RPC_S_OK
La llamada se realizó correctamente.
RPC_S_NO_PROTSEQS
No hay secuencias de protocolo admitidas.
RPC_S_OUT_OF_MEMORY
La memoria suficiente no está disponible.
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

Nota No se recomienda escuchar en todas las secuencias de protocolo admitidas, ya que hace que el servidor escuche en todas las secuencias de protocolo, incluidas las secuencias de protocolo no estándar. Se recomienda que los servidores escuchen solo en secuencias de protocolo estándar .
 
Los parámetros y efectos de RpcServerUseAllProtseqsEx sumen los de RpcServerUseAllProtseqs. La diferencia es el parámetro Policy , que permite restringir la asignación de puertos para puertos dinámicos y permite que las máquinas de host múltiple se enlacen selectivamente a las NIC especificadas.

Si se establece el campo NICFlags de la estructura de RPC_POLICY en cero, esta API extendida es funcionalmente equivalente a RpcServerUseAllProtseqs original y el servidor se enlazará a NIC en función de la configuración del registro del sistema. Para obtener información sobre cómo la configuración del Registro define los puertos de Internet e intranet disponibles, consulte Configuración del Registro para asignaciones de puertos y enlace selectivo.

Nota La configuración de marca del campo Directiva solo es efectiva cuando la secuencia de protocolo ncacn_ip_tcp o ncadg_ip_udp está en uso. Para todas las demás secuencias de protocolo, el tiempo de ejecución rpc omite estos valores.
 
Una aplicación de servidor llama a RpcServerUseAllProtseqsEx para registrar todas las secuencias de protocolo admitidas con la biblioteca en tiempo de ejecución rpc. Para recibir llamadas a procedimientos remotos, un servidor debe registrar al menos una secuencia de protocolo con la biblioteca en tiempo de ejecución rpc.

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. El nombre del punto de conexión lo genera el tiempo de ejecución de RPC o el sistema operativo. Por ejemplo, para ncacn_ip_tcp, el número de puerto viene determinado dinámicamente por el tiempo de ejecución de RPC, en función de la disponibilidad y la configuración del Registro.

Nota El uso de la función RpcServerUseAllProtseqsEx no hace que el servidor escuche en las secuencias de protocolo siguientes:
 
Nota Para escuchar cualquiera de esas secuencias de protocolo, cada secuencia debe seleccionarse individualmente.
 
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 registrar selectivamente secuencias de protocolo, un servidor llama a RpcServerUseProtseqEx, RpcServerUseProtseqIfEx o RpcServerUseProtseqEpEx. Consulte Enlace del lado servidor para obtener una descripción de las rutinas a las que normalmente llamará un servidor después de registrar secuencias de protocolo.

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

Consulte también

Configuración del Registro para asignaciones de puertos y enlace selectivo

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx