Partager via


Fonction RpcServerInterfaceGroupCreate (rpcdce.h)

La fonction RpcServerInterfaceGroupCreate crée un groupe d’interface de serveur RPC pour l’application serveur. Ce groupe d’interfaces spécifie entièrement les interfaces, les points de terminaison et les propriétés inactives d’une application serveur RPC. Une fois créé, un groupe d’interfaces peut être activé et désactivé selon les besoins de l’application.

Syntaxe

RPC_STATUS RpcServerInterfaceGroupCreate(
  [in]  RPC_INTERFACE_TEMPLATE               *Interfaces,
  [in]  unsigned long                        NumIfs,
  [in]  RPC_ENDPOINT_TEMPLATE                *Endpoints,
  [in]  unsigned long                        NumEndpoints,
  [in]  unsigned long                        IdlePeriod,
  [in]  RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN IdleCallbackFn,
  [in]  void                                 *IdleCallbackContext,
  [out] PRPC_INTERFACE_GROUP                 IfGroup
);

Paramètres

[in] Interfaces

Pointeur vers un tableau de structures RPC_INTERFACE_TEMPLATE qui définissent les interfaces exposées par le groupe d’interfaces.

[in] NumIfs

Nombre d’éléments dans Interfaces.

[in] Endpoints

Pointeur vers un tableau de structures RPC_ENDPOINT_TEMPLATE qui définissent les points de terminaison utilisés par le groupe d’interfaces.

[in] NumEndpoints

Nombre d’éléments dans Points de terminaison.

[in] IdlePeriod

Durée, en secondes, après que le groupe d’interfaces devient inactif, que le runtime RPC doit attendre avant d’appeler le rappel inactif. 0 signifie que le rappel est appelé immédiatement. INFINITE signifie que l’application serveur ne se soucie pas de l’état d’inactivité du groupe d’interfaces.

[in] IdleCallbackFn

Une RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN rappel que le runtime RPC appelle une fois que le groupe d’interfaces est inactif pendant la durée indiquée dans IdlePeriod. Peut être NULL uniquement si IdlePeriod est INFINITE.

[in] IdleCallbackContext

Pointeur défini par l’utilisateur à passer au rappel inactif dans IdleCallbackFn.

[out] IfGroup

En cas de réussite, un pointeur vers une mémoire tampon RPC_INTERFACE_GROUP qui reçoit le handle vers le groupe d’interfaces nouvellement créé. Si cette fonction échoue, IfGroup n’est pas défini.

Valeur retournée

Valeur Signification
RPC_S_OK
L’appel a réussi.
 
Note Pour obtenir la liste des codes d’erreur valides, consultez Valeurs de retour RPC.
 

Remarques

Une application serveur peut éventuellement être avertie lorsqu’un groupe d’interfaces devient inactif. Bien que n’importe quelle application puisse tirer parti de cette fonctionnalité, elle s’adresse aux développeurs de services qui souhaitent permettre à leur service de s’arrêter.

IdlePeriod empêche le runtime RPC de produire un grand nombre de notifications si l’état d’inactivité change rapidement et, dans le cas de services déclenchés, aide le service à éviter inutilement le démarrage et l’arrêt. Les développeurs doivent tenir compte du coût de l’initialisation et de l’arrêt du service, de la fréquence attendue de la nouvelle activité et du coût du maintien du service inactif lors de la sélection de cette valeur. Une période d’inactivité faible entraîne le démarrage et l’arrêt fréquents du service à mesure que de nouvelles activités client ont lieu, tandis qu’une période d’inactivité élevée entraîne la consommation de ressources du service sans effectuer un travail significatif.

Les interfaces d’un groupe d’interfaces ne peuvent être appelées que sur des points de terminaison du même groupe. Les interfaces qui ne font pas partie d’un groupe d’interfaces ne peuvent pas être appelées sur des points de terminaison qui font partie d’un groupe.

L’activité du serveur RPC n’est pas toujours visible par l’application serveur. Dans certains cas, le simple fait d’avoir un client avec une connexion ouverte au serveur peut le maintenir actif même si aucun appel n’a été distribué pendant une longue période de temps. Les applications serveur ne doivent pas s’appuyer sur une corrélation entre le runtime RPC déclarant que le groupe est inactif et l’heure depuis la distribution du dernier appel.

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

RpcServerInterfaceGroupActivate

RpcServerInterfaceGroupClose

RpcServerInterfaceGroupDeactivate

RpcServerInterfaceGroupInqBindings