Funzione RpcServerUseProtseqEpEx (rpcdce.h)
La funzione RpcServerUseProtseqEpEx indica alla libreria di runtime RPC di usare la sequenza di protocollo specificata combinata con l'endpoint specificato per la ricezione di chiamate di routine remote.
Sintassi
RPC_STATUS RpcServerUseProtseqEpEx(
RPC_WSTR Protseq,
unsigned int MaxCalls,
RPC_WSTR Endpoint,
void *SecurityDescriptor,
PRPC_POLICY Policy
);
Parametri
Protseq
Puntatore a un identificatore stringa della sequenza di protocollo da registrare con la libreria di runtime RPC.
MaxCalls
Lunghezza della coda del backlog per la sequenza di protocollo ncacn_ip_tcp. Tutte le altre sequenze di protocolli ignorano questo parametro. Usare RPC_C_PROTSEQ_MAX_REQS_DEFAULT per specificare il valore predefinito. Vedere la sezione Osservazioni.
Endpoint
Puntatore alle informazioni sull'indirizzo dell'endpoint da usare nella creazione di un'associazione per la sequenza di protocollo specificata da Protseq.
SecurityDescriptor
Puntatore a un parametro facoltativo fornito per il sottosistema di sicurezza. Usato solo per le sequenze di protocolli ncacn_np e ncalrpc . Tutte le altre sequenze di protocolli ignorano questo parametro. L'uso di un descrittore di sicurezza nell'endpoint per rendere sicuro un server non è consigliato. Questo parametro non viene visualizzato nella specifica DCE per questa API.
Policy
Puntatore alla struttura RPC_POLICY , che contiene flag che impostano attributi specifici del trasporto. Nel caso del trasporto ncadg_mq , questi flag specificano le proprietà della coda di ricezione del processo del server. Nel caso dei trasporti ncacn_ip_tcp o ncadg_ip_udp , questi flag limitano l'allocazione delle porte per le porte dinamiche e consentono ai computer multihomed di associare in modo selettivo alle schede di interfaccia di rete.
Le impostazioni del flag nel campo Criteri sono valide solo quando vengono usate le sequenze di protocolli ncacn_ip_tcp, ncadg_ip_udp o ncadg_mq . Per tutte le altre sequenze di protocolli, il tempo di esecuzione RPC ignora questi valori.
Valore restituito
Valore | Significato |
---|---|
|
La chiamata ha avuto esito positivo. |
|
La sequenza di protocollo non è supportata in questo host. |
|
La sequenza di protocollo non è valida. |
|
Il formato dell'endpoint non è valido. |
|
Il sistema non è in memoria. |
|
L'endpoint è un duplicato. |
|
Il descrittore di sicurezza non è valido. |
Commenti
I parametri e gli effetti di RpcServerUseProtseqEpExsumono quelli di RpcServerUseProtseqEp. La differenza è il parametro Policy , che consente di impostare criteri specifici agli endpoint. L'impostazione del campo NICFlags della struttura RPC_POLICY su zero rende questa funzione estesa equivalente alla funzione rpcServerUseProtseqEp originale quando usata con i trasporti ncacn_ip_tcp o ncadg_ip_udp .
Un'applicazione server chiama RpcServerUseProtseqEpEx per registrare una sequenza di protocolli con la libreria di runtime RPC. Con ogni registrazione della sequenza di protocolli, RpcServerUseProtseqEpEx include le informazioni di indirizzo dell'endpoint specificate.
Per ricevere richieste di chiamata alla routine remota, un server deve registrare almeno una sequenza di protocolli con la libreria di runtime RPC. Un'applicazione server può chiamare questa routine molte volte per registrare sequenze di protocolli e endpoint aggiuntivi. Per ogni sequenza di protocollo registrata da un server, la libreria di runtime RPC crea uno o più endpoint tramite cui il server riceve le richieste di chiamata alla routine remota. La libreria di runtime RPC crea endpoint diversi per ogni sequenza di protocolli. Tuttavia, ogni interfaccia nel processo è accessibile tramite qualsiasi endpoint. Per altre informazioni, vedere Scrittura di un client RPC sicuro o server.
Per MaxCalls, il valore fornito dall'applicazione è solo un hint. L'ora di esecuzione RPC o il provider Windows Sockets possono eseguire l'override del valore. Ad esempio, in Windows XP o Windows 2000 Professional, il valore è limitato a 5. I valori maggiori di 5 vengono ignorati e 5 vengono usati invece. In Windows Server 2003 e Windows 2000 Server il valore verrà rispettato.
Le applicazioni devono prestare attenzione al passaggio di valori ragionevoli in MaxCalls. I valori di grandi dimensioni nel server, nel server avanzato o nel server datacenter possono causare l'uso di una grande quantità di memoria del pool non a pagina. L'uso di un valore troppo piccolo non è anche favorevole, perché può causare l'esaurimento dei pacchetti TCP SYN dal server RST se la coda backlog viene esaurita. Uno sviluppatore di applicazioni deve bilanciare il footprint di memoria rispetto ai requisiti di scalabilità quando si determina il valore appropriato per MaxCalls.
Quando il computer è configurato per l'uso dell'associazione selettiva, non garantisce che il server abbia creato endpoint per tutte le interfacce di rete presenti nel computer. Il tempo di esecuzione RPC potrebbe non essere in ascolto su alcune interfacce di rete a seconda delle impostazioni di associazione selettiva. Inoltre, se un'interfaccia non ha ancora ricevuto un indirizzo IP usando DHCP, il server RPC non è in ascolto sull'interfaccia di rete finché non viene assegnato un indirizzo DHCP. Una restituzione riuscita implica che il server è in ascolto su almeno un'interfaccia di rete; l'elenco completo degli handle di associazione su cui è possibile ricevere chiamate di routine remote con una chiamata alla funzione RpcServerInqBindings.
Per altre informazioni, vedere Associazione lato server, associazione di stringhe, configurazione del Registro di sistema per allocazioni di porte e associazione selettiva eaccodamento messaggi RPC e il messaggio di riferimento MIDL e ncadg_mq.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | rpcdce.h (include Rpc.h) |
Libreria | Rpcrt4.lib |
DLL | Rpcrt4.dll |
Vedi anche
Scrittura di un client RPC sicuro o server