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 |
---|---|
|
L’appel a réussi. |
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