Funzione RpcServerUseProtseqIfEx (rpcdce.h)
La funzione RpcServerUseProtseqIfEx indica alla libreria di runtime RPC di usare la sequenza di protocollo specificata combinata con gli endpoint nella specifica dell'interfaccia per la ricezione di chiamate di routine remote.
Sintassi
RPC_STATUS RpcServerUseProtseqIfEx(
RPC_CSTR Protseq,
unsigned int MaxCalls,
RPC_IF_HANDLE IfSpec,
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 coda backlog per la sequenza di protocollo ncacn_ip_tcp . Tutte le altre sequenze di protocollo ignorano questo parametro. Usare RPC_C_PROTSEQ_MAX_REQS_DEFAULT per specificare il valore predefinito. Vedere la sezione Osservazioni.
IfSpec
Interfaccia contenente le informazioni sull'endpoint da usare per la creazione di un'associazione per la sequenza di protocollo specificata nel parametro Protseq .
SecurityDescriptor
Puntatore a un parametro facoltativo fornito per il sottosistema di sicurezza. Usato solo per le sequenze di protocollo ncacn_np e ncalrpc . Tutte le altre sequenze di protocollo ignorano questo parametro. Non è consigliabile usare un descrittore di sicurezza nell'endpoint per proteggere un server. Questo parametro non viene visualizzato nella specifica DCE per questa API.
Policy
Puntatore alla struttura RPC_POLICY , che contiene flag per limitare l'allocazione delle porte per le porte dinamiche e che consentono ai computer multihomed di eseguire l'associazione selettiva alle schede di interfaccia di rete.
Valore restituito
Valore | Significato |
---|---|
|
La chiamata ha avuto esito positivo. |
|
L'endpoint per questa sequenza di protocollo non viene specificato nel file IDL. |
|
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. |
|
Il descrittore di sicurezza non è valido. |
Commenti
I parametri e gli effetti di RpcServerUseProtseqIfEx estendono quelli di RpcServerUseProtseqIf. La differenza è il parametro Policy , che consente di limitare l'allocazione delle porte per le porte dinamiche e consente ai computer multihomed di eseguire l'associazione selettiva alle schede di interfaccia di rete.
L'impostazione del campo NICFlags della struttura RPC_POLICY su 0 rende questa API estesa equivalente funzionalmente all'originale RpcServerUseProtseqIf e il server verrà associato alle schede di interfaccia di rete in base alle impostazioni nel Registro di sistema. Per informazioni su come le impostazioni del Registro di sistema definiscono le porte Internet e Intranet disponibili, vedere Configurazione del Registro di sistema per le allocazioni delle porte e l'associazione selettiva.
Per ricevere richieste di chiamata di routine remota, un server deve registrare almeno una sequenza di protocollo con la libreria di runtime RPC. Un'applicazione server può chiamare questa routine più volte per registrare sequenze di protocolli aggiuntive.
Per ogni sequenza di protocollo registrata da un server, la libreria di runtime RPC crea uno o più endpoint tramite cui il server riceve richieste di chiamata di routine remota. La libreria di runtime RPC crea endpoint diversi per ogni sequenza di protocollo. Tuttavia, ogni interfaccia nel processo è accessibile tramite qualsiasi endpoint. Per altre informazioni, vedere Scrittura di un client o un server RPC sicuro.
Per MaxCalls, il valore fornito dall'applicazione è solo un hint. Il runtime RPC o il provider Windows Sockets può 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 vengono usati 5. In Windows Server 2003 e Windows 2000 Server, il valore verrà rispettato.
Le applicazioni devono prestare attenzione a passare 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 di paging. Anche l'uso di un valore troppo piccolo non è favorevole, perché può comportare l'esaurimento dei pacchetti TCP SYN da parte di TCP RST dal server. 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, la restituzione riuscita non garantisce che il server abbia creato endpoint per tutte le interfacce di rete presenti nel computer. Il runtime 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 tramite 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; È possibile ottenere l'elenco completo degli handle di associazione su cui è possibile ricevere chiamate di routine remote con una chiamata alla funzione RpcServerInqBindings.
Per registrare tutte le sequenze di protocollo dal file IDL, un server chiama RpcServerUseAllProtseqsIfEx. Per altre informazioni, vedere Associazione lato server. Per un elenco delle sequenze di protocollo supportate da MICROSOFT RPC, vedere Associazione di stringhe.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [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 o un server RPC sicuro