Función RpcServerRegisterIf3 (rpcdce.h)

La función RpcServerRegisterIf3 registra una interfaz con la biblioteca en tiempo de ejecución rpc.

Sintaxis

RPC_STATUS RpcServerRegisterIf3(
  [in]           RPC_IF_HANDLE      IfSpec,
  [in, optional] UUID               *MgrTypeUuid,
  [in, optional] RPC_MGR_EPV        *MgrEpv,
  [in]           unsigned int       Flags,
  [in]           unsigned int       MaxCalls,
  [in]           unsigned int       MaxRpcSize,
  [in, optional] RPC_IF_CALLBACK_FN *IfCallback,
  [in, optional] void               *SecurityDescriptor
);

Parámetros

[in] IfSpec

Estructura generada por MIDL que indica la interfaz que se va a registrar.

[in, optional] MgrTypeUuid

Puntero a un UUID de tipo que se va a asociar con el parámetro MgrEpv . Si se especifica un valor de parámetro null (o un UUID nulo) se registra IfSpec con un UUID de tipo nulo.

[in, optional] MgrEpv

Vector de punto de entrada (EPV) de las rutinas de administrador. Para usar el EPV predeterminado generado por MIDL, especifique un valor NULL . Para obtener más información, consulte RPC_MGR_EPV.

[in] Flags

Banderas. Para obtener una lista de valores de marca, vea Marcas de registro de interfaz.

[in] MaxCalls

Número máximo de solicitudes simultáneas de llamadas a procedimientos remotos que el servidor puede aceptar en una interfaz de escucha automática . El parámetro MaxCalls solo es aplicable en una interfaz de escucha automática y se omite en las interfaces que no son de escucha automática. La biblioteca en tiempo de ejecución de RPC hace su mejor esfuerzo para asegurarse de que el servidor no permite más solicitudes de llamada simultáneas que el número de llamadas especificadas en MaxCalls. El número real puede ser mayor y puede variar para cada secuencia de protocolo.

Las llamadas en otras interfaces se rigen por el valor del parámetro MaxCalls de todo el proceso especificado en la llamada de función RpcServerListen .

Si el número de llamadas simultáneas no es un problema, puede lograr un rendimiento ligeramente mejor del lado servidor especificando el valor predeterminado mediante RPC_C_LISTEN_MAX_CALLS_DEFAULT. Al hacerlo, se evita que el entorno en tiempo de ejecución rpc aplique una restricción innecesaria.

[in] MaxRpcSize

Tamaño máximo de bloques de datos entrantes, en bytes. Este parámetro se puede usar para ayudar a evitar ataques malintencionados por denegación de servicio. Si el bloque de datos de una llamada a procedimiento remoto es mayor que MaxRpcSize, la biblioteca en tiempo de ejecución rpc rechaza la llamada y envía un error de RPC_S_ACCESS_DENIED al cliente. Si se especifica un valor de (unsigned int) –1 para este parámetro se quita el límite en el tamaño de los bloques de datos entrantes. Este parámetro no tiene ningún efecto en las llamadas realizadas a través del protocolo ncalrpc .

[in, optional] IfCallback

Función de devolución de llamada de seguridad o NULL para ninguna devolución de llamada. Cada interfaz registrada puede tener una función de devolución de llamada diferente. Vea los comentarios sobre RpcServerRegisterIf2.

[in, optional] SecurityDescriptor

Descriptor de seguridad para acceder a la interfaz RPC. Cada interfaz registrada puede tener un descriptor de seguridad diferente.

Valor devuelto

Devuelve RPC_S_OK si se realiza correctamente.

Nota Para obtener una lista de códigos de error válidos, consulte Rpc Return Values.
 

Comentarios

Los parámetros y efectos de la función RpcServerRegisterIf3 amplían los de la función RpcServerRegisterIf2 . La diferencia es la capacidad de especificar un descriptor de seguridad para controlar el acceso a la interfaz RPC registrada.

Si se especifican SecurityDescriptor y IfCallbackFn , primero se comprobará el descriptor de seguridad de SecurityDescriptor y se llamará a la devolución de llamada en IfCallbackFn después de que se supere la comprobación de acceso con el descriptor de seguridad.

Al llamar a RpcServerRegisterIf3 con SecurityDescriptor establecido en NULL o llamando a RpcServerRegisterIf, RpcServerRegisterIf2 o RpcServerRegisterIfEx para registrar una interfaz, se usará un descriptor de seguridad predeterminado. El descriptor de seguridad predeterminado no permitirá el acceso desde ningún proceso de AppContainer a la interfaz si el servidor RPC no es un proceso de AppContainer. El descriptor de seguridad predeterminado no permitirá el acceso desde ningún proceso de otros procesos de AppContainer a la interfaz si el servidor RPC es un proceso de AppContainer. El descriptor de seguridad predeterminado permitirá el acceso desde procesos normales, incluidos los procesos de integridad baja.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado rpcdce.h (incluir Rpc.h)
Library Rpcrt4.lib
Archivo DLL Rpcrt4.dll

Consulte también

Registrar interfaces

RpcGetAuthorizationContextForClient

RpcServerRegisterIf

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx