Funzione RpcEpRegisterNoReplace (rpcdce.h)
La funzione RpcEpRegisterNoReplace aggiunge informazioni sull'indirizzo del server al database endpoint-map locale.
Sintassi
RPC_STATUS RpcEpRegisterNoReplace(
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVector,
UUID_VECTOR *UuidVector,
RPC_CSTR Annotation
);
Parametri
IfSpec
Interfaccia per la registrazione con il database endpoint-map 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 parametro Null indica che non sono presenti UUID oggetto da registrare.
Annotation
Puntatore al commento di stringa di caratteri applicato a ogni elemento cross-product aggiunto al database endpoint-map locale. La stringa può contenere fino a 64 caratteri, incluso il carattere di terminazione Null. Specificare un valore Null o una stringa con terminazione Null ("\0") se non è presente alcuna stringa di annotazione.
La stringa di annotazione viene utilizzata dalle applicazioni solo per informazioni. RPC non usa questa stringa per determinare con quale istanza del server un client comunica o per enumerare gli elementi nel database endpoint-map.
Valore restituito
Valore | Significato |
---|---|
|
La chiamata ha avuto esito positivo. |
|
Nessuna associazione. |
|
Handle di associazione non valido. |
|
Si tratta del tipo di binding errato per l'operazione. |
Commenti
La funzione RpcEpRegisterNoReplace aggiunge voci al database endpoint-map dell'host locale. Questa funzione non sostituisce le voci di database esistenti.
Un server usa RpcEpRegisterNoReplace anziché RpcEpRegister quando più istanze del server verranno eseguite nello stesso host. In altre parole, usare questa funzione quando più istanze del server offriranno la stessa interfaccia UUID, UUID oggetto e sequenza di protocollo in qualsiasi momento.
Poiché le voci non vengono sostituite quando si chiama RpcEpRegisterNoReplace, i server devono annullare la registrazione prima di interrompere l'esecuzione. In caso contrario, i dati non aggiornati si accumulano ogni volta che un'istanza del server viene arrestata senza chiamare RpcEpUnregister. Le voci non aggiornate aumentano la probabilità che un client riceva gli endpoint a server inesistenti. Il client trascorrerà tempo durante il tentativo di comunicare con un server inesistente prima di ottenere un altro endpoint.
Un server può usare RpcEpRegister e RpcEpRegisterNoReplace per registrare le voci nel database del mapper dell'endpoint. Nelle versioni precedenti a Windows 2000 erano disponibili due funzioni per consentire a un server di sovrascrivere le voci non aggiornate nel database del mapper dell'endpoint lasciato dalle istanze del server precedenti che non sono più in esecuzione. Il database del mapper dell'endpoint rimuove automaticamente le voci registrate da un'istanza del server non appena il server smette di funzionare. Tuttavia, i server non sono autorizzati a sostituire le voci del mapper di 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:
- RpcServerUseAllProtseqs
- RpcServerUseProtseq
- RpcServerUseProtseqEp
- RpcServerUseAllProtseqsIf
- RpcServerUseProtseqIf
Se viene usata una sequenza di protocollo senza specificare un endpoint, la libreria di runtime RPC genera automaticamente un endpoint dinamico. In questo caso, il server può chiamare RpcServerInqBindings seguito da RpcEpRegisterNoReplace per renderlo disponibile a più client. In caso contrario, il server avviato automaticamente è noto solo al client per il quale è stato avviato il server.
Ogni elemento aggiunto al database endpoint-map contiene logicamente quanto segue:
- UUID dell'interfaccia
- Versione dell'interfaccia (principale e secondaria)
- Handle di associazione
- UUID oggetto (facoltativo)
- Annotazione (facoltativo)
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 |