Condividi tramite


Funzione RpcServerUseAllProtseqsIfEx (rpcdce.h)

La funzione RpcServerUseAllProtseqsIfEx indica alla libreria di runtime RPC di usare tutte le sequenze di protocolli e gli endpoint specificati nella specifica dell'interfaccia per la ricezione di chiamate di routine remote.

Sintassi

RPC_STATUS RpcServerUseAllProtseqsIfEx(
  unsigned int  MaxCalls,
  RPC_IF_HANDLE IfSpec,
  void          *SecurityDescriptor,
  PRPC_POLICY   Policy
);

Parametri

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.

IfSpec

Interfaccia contenente le sequenze di protocolli e le informazioni relative sull'endpoint da usare nella creazione di handle di associazione.

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 per limitare l'allocazione delle porte dinamiche e consentire ai computer multihomed di associare in modo selettivo alle schede di interfaccia di rete.

Valore restituito

Valore Significato
RPC_S_OK
La chiamata ha avuto esito positivo.
RPC_S_NO_PROTSEQS
Non sono presenti sequenze di protocolli supportate.
RPC_S_INVALID_ENDPOINT_FORMAT
Formato dell'endpoint.
RPC_S_OUT_OF_MEMORY
Il sistema non è in memoria.
RPC_S_DUPLICATE_ENDPOINT
L'endpoint è un duplicato.
RPC_S_INVALID_SECURITY_DESC
Il descrittore di sicurezza non è valido.
RPC_S_INVALID_RPC_PROTSEQ
La sequenza di protocollo RPC non è valida.
 
Nota Per un elenco di codici di errore validi, vedere Valori restituiti RPC.
 

Commenti

Nota L'ascolto di tutte le sequenze di protocolli supportate non è consigliato, perché causa l'ascolto del server su tutte le sequenze di protocolli, incluse sequenze di protocolli non mainstream. È consigliabile che i server ascoltino solo le sequenze di protocolli mainstream .
 
I parametri e gli effetti di RpcServerUseAllProtseqsIfExsumono quelli di RpcServerUseAllProtseqsIf. La differenza è il campo Criteri , che consente di limitare l'allocazione delle porte dinamiche e consente ai computer multihomed di associare in modo selettivo le schede di interfaccia di rete.

L'impostazione del campo NICFlags della struttura RPC_POLICY su zero rende questa funzione estesa equivalente all'originale RpcServerUseAllProtseqsIfEx 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 allocazioni di porte e associazione selettiva.

Nota Le impostazioni del flag nel campo Criteri sono valide solo quando la sequenza di protocollo ncacn_ip_tcp o ncadg_ip_udp è in uso. Per tutte le altre sequenze di protocolli, il tempo di esecuzione RPC ignora questi valori.
 
Un'applicazione server chiama RpcServerUseAllProtseqsIfEx per registrare con la libreria di runtime RPC tutte le sequenze di protocolli e le informazioni sull'indirizzo dell'endpoint associate fornite nel file IDL.

Per ricevere richieste di chiamata alla routine remota, un server deve registrare almeno una sequenza di protocolli con la libreria di runtime RPC. 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.

Nota L'uso della funzione RpcServerUseAllProtseqsIfEx non causa l'ascolto del server nelle sequenze di protocolli seguenti:
 
Nota Per ascoltare una di queste sequenze di protocolli, ogni sequenza deve essere selezionata singolarmente.
 
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 registrare sequenze di protocolli selezionate specificate nel file IDL, un server chiama RpcServerUseProtseqIfEx. Per altre informazioni, vedere Associazione lato server.

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

RpcServerUseAllProtseqsEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx