Funzione RpcEpRegister (rpcdce.h)

La funzione RpcEpRegister aggiunge o sostituisce le informazioni sull'indirizzo del server nel database della mappa degli endpoint locale.

Sintassi

RPC_STATUS RpcEpRegister(
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVector,
  UUID_VECTOR        *UuidVector,
  RPC_CSTR           Annotation
);

Parametri

IfSpec

Interfaccia da registrare con il database di mapping dell'endpoint locale.

BindingVector

Puntatore a un vettore di handle di associazione su cui il server può ricevere chiamate di routine remote.

UuidVector

Puntatore a un vettore di UUID oggetto offerto dal server. L'applicazione server costruisce questo vettore. Un valore di argomento Null indica che non sono presenti UUID oggetto da registrare.

Annotation

Puntatore al commento della stringa di caratteri applicato a ogni elemento cross-product aggiunto al database della mappa degli endpoint locale. La stringa può essere fino a 64 caratteri lunghi, incluso il carattere di terminazione Null. Specificare un valore Null o una stringa con terminazione null ("\0") se non esiste alcuna stringa di annotazione.

La stringa di annotazione viene usata solo dalle applicazioni per informazioni. RPC non usa questa stringa per determinare l'istanza del server con cui un client comunica o per enumerare gli elementi nel database della mappa degli endpoint.

Valore restituito

Valore Significato
RPC_S_OK
La chiamata ha avuto esito positivo.
RPC_S_NO_BINDINGS
Nessun binding.
RPC_S_INVALID_BINDING
L'handle di associazione non è valido.
RPC_S_WRONG_KIND_OF_BINDING
Questo è stato il tipo di associazione sbagliato per l'operazione.
 
Nota Per un elenco di codici di errore validi, vedere Valori restituiti RPC.
 

Commenti

La funzione RpcEpRegister aggiunge o sostituisce le voci nel database del mapping degli endpoint dell'host locale. Per una voce di database esistente corrispondente alla specifica dell'interfaccia, all'handle di associazione e all'UUID dell'oggetto, questa funzione sostituisce l'endpoint della voce con l'endpoint nell'handle di associazione fornito.

Un server può usare RpcEpRegister e RpcEpRegisterNoReplace per registrare le voci nel database endpoint mapper. In precedenza a Windows 2000, due funzioni erano disponibili per consentire a un server di sovrascrivere le voci non aggiornate nel database endpoint mapper lasciato dalle istanze del server precedenti che non sono più in esecuzione. Il database del mapper endpoint rimuove automaticamente le voci registrate da un'istanza del server non appena il server smette di funzionare. Tuttavia, i server non possono sostituire le voci del mapper endpoint di un altro server a scopo di sicurezza. Pertanto, RpcEpRegister e RpcEpRegisterNoReplace eseguono in gran parte la stessa funzionalità.

Un'applicazione server chiama RpcEpRegister per registrare gli endpoint specificati chiamando una delle funzioni seguenti:

Se il server esporta anche nel database name-service, il server chiama RpcEpRegister con lo stesso valore IfSpec, BindingVector e UuidVector usato per chiamare la funzione RpcNsBindingExport .

Se viene usata una sequenza di protocolli senza specificare un endpoint, la libreria di runtime RPC genera automaticamente un endpoint dinamico. In questo caso, il server può chiamare RpcServerInqBindings seguito da RpcEpRegister per renderlo disponibile per più client. In caso contrario, il server avviato automaticamente è noto solo al client per cui è stato avviato il server. Ogni elemento aggiunto al database della mappa endpoint contiene logicamente quanto segue:

  • UUID dell'interfaccia
  • Versione dell'interfaccia (principale e secondaria)
  • Handle di associazione
  • Oggetto UUID (facoltativo)
  • Annotazione (facoltativo)
RpcEpRegister crea un prodotto incrociato dai parametri IfSpec, BindingVector e UuidVector e aggiunge ogni elemento nel prodotto incrociato come registrazione separata nel database della mappa degli endpoint.

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

RpcBindingFromStringBinding

RpcEpRegisterNoReplace

RpcEpUnregister

RpcNsBindingExport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf