Condividi tramite


Funzione RpcServerInterfaceGroupCreate (rpcdce.h)

La funzione RpcServerInterfaceGroupCreate crea un gruppo di interfacce server RPC per l'applicazione server. Questo gruppo di interfacce specifica completamente le interfacce, gli endpoint e le proprietà inattive di un'applicazione server RPC. Una volta creato, un gruppo di interfaccia può essere attivato e disattivato in base alle necessità dell'applicazione.

Sintassi

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

Parametri

[in] Interfaces

Puntatore a una matrice di strutture RPC_INTERFACE_TEMPLATE che definiscono le interfacce esposte dal gruppo di interfacce.

[in] NumIfs

Numero di elementi in Interfacce.

[in] Endpoints

Puntatore a una matrice di strutture RPC_ENDPOINT_TEMPLATE che definiscono gli endpoint usati dal gruppo di interfacce.

[in] NumEndpoints

Numero di elementi in Endpoint.

[in] IdlePeriod

Periodo di tempo in secondi dopo che il gruppo di interfacce diventa inattivo che il runtime RPC deve attendere prima di richiamare il callback inattivo. 0 indica che il callback viene richiamato immediatamente. INFINITE indica che l'applicazione server non si occupa dello stato di inattività del gruppo di interfacce.

[in] IdleCallbackFn

Callback RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN che il runtime RPC richiamerà quando il gruppo di interfacce è inattivo per il periodo di tempo specificato in IdlePeriod. Può essere NULL solo se IdlePeriod è INFINITE.

[in] IdleCallbackContext

Puntatore definito dall'utente da passare al callback inattivo in IdleCallbackFn.

[out] IfGroup

In caso di esito positivo, un puntatore a un buffer RPC_INTERFACE_GROUP che riceve l'handle al gruppo di interfacce appena creato. Se questa funzione ha esito negativo, IfGroup non è definito.

Valore restituito

Valore Significato
RPC_S_OK
La chiamata ha avuto esito positivo.
 
Nota Per un elenco di codici di errore validi, vedere Valori restituiti RPC.
 

Commenti

Un'applicazione server può essere notificata facoltativamente quando un gruppo di interfacce diventa inattiva. Anche se qualsiasi applicazione può sfruttare questa funzionalità, è destinata agli sviluppatori di servizi che vogliono abilitare il servizio per arrestare l'inattività.

IdlePeriod impedisce al runtime RPC di produrre un numero elevato di notifiche se lo stato di inattività cambia rapidamente e, nel caso dei servizi attivati, consente al servizio di evitare inutilmente l'avvio e l'arresto. Gli sviluppatori devono considerare il costo dell'inizializzazione e dell'arresto del servizio, la frequenza prevista con cui si verificherà una nuova attività e il costo di mantenere il servizio inattivo quando si seleziona questo valore. Un periodo di inattività basso causerà l'avvio e l'arresto frequente del servizio man mano che viene eseguita una nuova attività client, mentre un periodo di inattività elevato causerà l'utilizzo delle risorse da parte del servizio senza eseguire operazioni significative.

Le interfacce in un gruppo di interfaccia possono essere chiamate solo sugli endpoint dello stesso gruppo. Le interfacce che non fanno parte di un gruppo di interfacce non possono essere chiamate su endpoint che fanno parte di un gruppo.

L'attività del server RPC non è sempre visibile all'applicazione server. In alcuni casi, la semplice presenza di un client con una connessione aperta al server può mantenerla attiva anche se non sono state inviate chiamate per un lungo periodo di tempo. Le applicazioni server non devono basarsi su alcuna correlazione tra il runtime RPC dichiarando che il gruppo è inattivo e l'ora successiva all'invio dell'ultima chiamata.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione rpcdce.h (include Rpc.h)
Libreria Rpcrt4.lib
DLL Rpcrt4.dll

Vedi anche

RpcServerInterfaceGroupActivate

RpcServerInterfaceGroupClose

RpcServerInterfaceGroupDeactivate

RpcServerInterfaceGroupInqBindings