Condividi tramite


Funzione RpcServerUseProtseqEpExA (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 RpcServerUseProtseqEpExA(
  RPC_CSTR     Protseq,
  unsigned int MaxCalls,
  RPC_CSTR     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 di 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.

Endpoint

Puntatore alle informazioni sull'indirizzo dell'endpoint da usare per la 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 ncacn_np e sequenze di protocollo 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 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 eseguire l'associazione selettiva alle schede di interfaccia di rete.

Le impostazioni del flag nel campo criteri di sono valide solo quando sono in uso le sequenze di protocollo ncacn_ip_tcp, ncadg_ip_udpo ncadg_mq. Per tutte le altre sequenze di protocollo, il tempo di esecuzione RPC ignora questi valori.

nota parti dei criteri associati agli endpoint dinamici vengono ignorate quando viene chiamata la funzione RpcServerUseProtseqEpEx, poiché la porta viene specificata nell'endpoint stesso.
 

Valore restituito

Valore Significato
RPC_S_OK
Chiamata riuscita.
RPC_S_PROTSEQ_NOT_SUPPORTED
La sequenza di protocollo non è supportata in questo host.
RPC_S_INVALID_RPC_PROTSEQ
La sequenza di protocollo non è valida.
RPC_S_INVALID_ENDPOINT_FORMAT
Il formato dell'endpoint non è valido.
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.
 
Nota Per un elenco di codici di errore validi, vedere RPC Return Values.
 

Osservazioni

I parametri e gli effetti di RpcServerUseProtseqEpEx sottosumono quelli di RpcServerUseProtseqEp. La differenza è il parametro policy, che consente di impostare criteri specifici negli endpoint. Se si imposta il campo NICFlags della struttura di RPC_POLICY su zero, questa funzione estesa equivale alla RpcServerUseProtseqEp originale quando viene usata con i trasporti ncacn_ip_tcp o ncadg_ip_udp.

Un'applicazione server chiama RpcServerUseProtseqEpEx per registrare una sequenza di protocollo con la libreria di runtime RPC. Con ogni registrazione della sequenza di protocollo, RpcServerUseProtseqEpEx include le informazioni sull'indirizzo dell'endpoint specificate.

Per ricevere richieste di chiamata di procedura remota, un server deve registrare almeno una sequenza di protocollo 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 richieste di chiamata di procedura 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 5 vengono invece usati. 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'utilizzo 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'utilizzo 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; 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 Server-Side Binding, String Binding, Configuring the Registry for Port Allocations and Selective Bindinge RPC Message Queuing e le pagine di riferimento MIDL message e ncadg_mq.

Nota

L'intestazione rpcdce.h definisce RpcServerUseProtseqEpEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione rpcdce.h (include Rpc.h)
libreria Rpcrt4.lib
dll Rpcrt4.dll

Vedere anche

RPC_POLICY

RpcServerUseAllProtseqsEx

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx

Scrittura di un client o un server RPC sicuro