Funzione RpcNsBindingExportA (rpcnsi.h)
La funzione RpcNsBindingExport stabilisce una voce del servizio nome-database con più handle di associazione e più oggetti per un server.
Sintassi
RPC_STATUS RpcNsBindingExportA(
unsigned long EntryNameSyntax,
RPC_CSTR EntryName,
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVec,
UUID_VECTOR *ObjectUuidVec
);
Parametri
EntryNameSyntax
Sintassi di EntryName.
Per usare la sintassi specificata nella voce del valore del Registro di sistema HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax, specificare un valore di RPC_C_NS_SYNTAX_DEFAULT.
EntryName
Puntatore al nome della voce in cui vengono esportati gli handle di associazione e gli UUID dell'oggetto. Non è possibile specificare una stringa null o vuota. Il client e il server devono usare lo stesso nome di voce.
IfSpec
Struttura di dati generata da Stub che specifica l'interfaccia da esportare. Un valore Null indica che non sono presenti handle di associazione da esportare (solo gli UUID dell'oggetto devono essere esportati) e BindingVec viene ignorato.
BindingVec
Puntatore alle associazioni server da esportare. Un valore Null indica che non sono presenti handle di associazione da esportare (solo gli UUID dell'oggetto devono essere esportati).
ObjectUuidVec
Puntatore a un vettore di UUID oggetto offerto dal server. L'applicazione server costruisce questo vettore. Un valore Null indica che non sono presenti UUID oggetto da esportare (solo gli handle di associazione devono essere esportati).
Valore restituito
Valore | Significato |
---|---|
|
La chiamata ha avuto esito positivo. |
|
Non c'era nulla da esportare. |
|
L'handle di associazione non è valido. |
|
Questo è stato il tipo di associazione sbagliato per l'operazione. |
|
La sintassi del nome non è valida. |
|
La sintassi del nome non è supportata. |
|
Il nome è incompleto. |
|
Nessun privilegio per l'operazione nome-servizio. |
|
Il servizio nome non è disponibile. |
Commenti
La funzione RpcNsBindingExport consente a un'applicazione server di offrire pubblicamente un'interfaccia nel database name-service da usare da qualsiasi applicazione client.
Efficace con Windows 2000, l'ambiente di runtime RPC usa Active Directory come database name-service. Ciò significa che le voci esportate autorizzate vengono mantenute nel servizio nome e sono visibili anche dopo il riavvio. Le esportazioni non autorizzate non sono persistenti. Vedere Controllo di accesso nella sezione Sicurezza di Platform Software Development Kit (SDK) per altre informazioni sull'autorizzazione e sugli elenchi di Controllo di accesso.
Per esportare un'interfaccia, l'applicazione server chiama la routine RpcNsBindingExport con un'interfaccia e l'associazione del server gestisce un client può usare per accedere al server. Un'applicazione server chiama anche la funzione RpcNsBindingExport per offrire pubblicamente gli oggetti UUID delle risorse offerte, se presenti, nel database name-service.
Un server può esportare interfacce e oggetti in una singola chiamata a RpcNsBindingExport oppure esportarli separatamente. Se la voce del database name-service specificata da EntryName non esiste, RpcNsBindingExport tenta di crearla. In questo caso, l'applicazione server deve avere il privilegio di creare la voce. Oltre a chiamare RpcNsBindingExport, un server che ha chiamato RpcServerUseAllProtseqs o RpcServerUseProtseq deve anche registrarsi con il database del mapping dell'endpoint locale chiamando RpcEpRegister o RpcEpRegisterNoReplace.
Un server non è necessario per esportare alcuna delle relative interfacce nel database name-service. Quando un server non esporta, solo i client che conoscono privatamente che le informazioni di associazione del server possono accedere alle relative interfacce. Ad esempio, un client che dispone delle informazioni necessarie per costruire un'associazione di stringhe può chiamare RpcBindingFromStringBinding per creare un handle di associazione per effettuare chiamate di routine remote a un server.
Prima di chiamare RpcNsBindingExport, un server deve eseguire le operazioni seguenti:
- Registrare una o più sequenze di protocolli con la libreria di runtime RPC locale chiamando una delle funzioni seguenti:
- Ottenere un elenco di associazioni server chiamando la funzione RpcServerInqBindings .
Se un server esporta nella stessa voce del database nome-servizio più volte, la seconda e successiva chiamata a RpcNsBindingExport aggiunge le informazioni di associazione e gli UUID dell'oggetto quando tali dati sono diversi dalle informazioni di associazione già presenti nella voce del server. I dati esistenti non vengono rimossi dalla voce.
Per rimuovere handle di associazione e UUID oggetto dal database name-service, un'applicazione server chiama la funzione RpcNsBindingUnexport .
Una voce del server deve avere almeno un handle di associazione da esistere. Di conseguenza, l'esportazione di solo UUID in una voce non esistente non ha alcun effetto e l'esportazione di tutti gli handle di associazione elimina la voce.
Nota
L'intestazione rpcnsi.h definisce RpcNsBindingExport come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | rpcnsi.h (include Rpc.h) |
Libreria | Rpcns4.lib |
DLL | Rpcns4.dll |