Partager via


Fonction RpcServerRegisterIf3 (rpcdce.h)

La fonction RpcServerRegisterIf3 inscrit une interface avec la bibliothèque d’exécution RPC.

Syntaxe

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
);

Paramètres

[in] IfSpec

Structure générée par MIDL indiquant l’interface à inscrire.

[in, optional] MgrTypeUuid

Pointeur vers un UUID de type à associer au paramètre MgrEpv . La spécification d’une valeur de paramètre null (ou d’un UUID nil) inscrit IfSpec avec un UUID de type nil.

[in, optional] MgrEpv

Vecteur de point d’entrée (EPV) des routines du gestionnaire. Pour utiliser l’EPV par défaut généré par MIDL, spécifiez une valeur null . Pour plus d’informations, consultez RPC_MGR_EPV.

[in] Flags

Drapeaux. Pour obtenir la liste des valeurs d’indicateur, consultez Indicateurs d’inscription d’interface.

[in] MaxCalls

Nombre maximal de demandes d’appel de procédure distante simultanées que le serveur peut accepter sur une interface d’écoute automatique . Le paramètre MaxCalls s’applique uniquement sur une interface d’écoute automatique et est ignoré sur les interfaces qui ne sont pas en écoute automatique. La bibliothèque d’exécution RPC fait tout son possible pour s’assurer que le serveur n’autorise pas plus de demandes d’appels simultanés que le nombre d’appels spécifié dans MaxCalls. Le nombre réel peut être supérieur et peut varier pour chaque séquence de protocole.

Les appels sur d’autres interfaces sont régis par la valeur du paramètre MaxCalls à l’échelle du processus spécifié dans l’appel de fonction RpcServerListen .

Si le nombre d’appels simultanés n’est pas un problème, vous pouvez obtenir des performances côté serveur légèrement meilleures en spécifiant la valeur par défaut à l’aide de RPC_C_LISTEN_MAX_CALLS_DEFAULT. Cela évite à l’environnement d’exécution RPC d’appliquer une restriction inutile.

[in] MaxRpcSize

Taille maximale des blocs de données entrants, en octets. Ce paramètre peut être utilisé pour empêcher les attaques malveillantes par déni de service. Si le bloc de données d’un appel de procédure distante est supérieur à MaxRpcSize, la bibliothèque d’exécution RPC rejette l’appel et envoie une erreur RPC_S_ACCESS_DENIED au client. La spécification d’une valeur (int non signé) -1 pour ce paramètre supprime la limite de taille des blocs de données entrants. Ce paramètre n’a aucun effet sur les appels effectués sur le protocole ncalrpc .

[in, optional] IfCallback

Fonction de rappel de sécurité ou NULL pour aucun rappel. Chaque interface inscrite peut avoir une fonction de rappel différente. Consultez remarques sur RpcServerRegisterIf2.

[in, optional] SecurityDescriptor

Descripteur de sécurité pour accéder à l’interface RPC. Chaque interface inscrite peut avoir un descripteur de sécurité différent.

Valeur retournée

Retourne RPC_S_OK en cas de réussite.

Note Pour obtenir la liste des codes d’erreur valides, consultez Valeurs de retour RPC.
 

Remarques

Les paramètres et les effets de la fonction RpcServerRegisterIf3 étendent ceux de la fonction RpcServerRegisterIf2 . La différence est la possibilité de spécifier un descripteur de sécurité pour contrôler l’accès à l’interface RPC inscrite.

Si SecurityDescriptor et IfCallbackFn sont spécifiés, le descripteur de sécurité dans SecurityDescriptor est vérifié en premier et le rappel dans IfCallbackFn est appelé après la case activée d’accès par rapport au descripteur de sécurité.

Lorsque vous appelez RpcServerRegisterIf3 avec SecurityDescriptor défini sur NULL, ou lorsque vous appelez RpcServerRegisterIf, RpcServerRegisterIf2 ou RpcServerRegisterIfEx pour inscrire une interface, un descripteur de sécurité par défaut est utilisé. Le descripteur de sécurité par défaut n’autorise pas l’accès à partir d’un processus AppContainer à l’interface si le serveur RPC n’est pas un processus AppContainer. Le descripteur de sécurité par défaut n’autorise pas l’accès à partir d’un processus dans d’autres processus AppContainer à l’interface si le serveur RPC est un processus AppContainer. Le descripteur de sécurité par défaut autorise l’accès à partir de processus normaux, y compris les processus à faible intégrité.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
Plateforme cible Windows
En-tête rpcdce.h (inclure Rpc.h)
Bibliothèque Rpcrt4.lib
DLL Rpcrt4.dll

Voir aussi

Inscription d’interfaces

RpcGetAuthorizationContextForClient

RpcServerRegisterIf

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx