Funzione RpcNsBindingExportA (rpcnsi.h)
La funzione RpcNsBindingExport stabilisce una voce nome service-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 il valore RPC_C_NS_SYNTAX_DEFAULT.
EntryName
Puntatore al nome della voce a cui vengono esportati handle di associazione e UUID oggetto. Non è possibile specificare una stringa null o vuota. Il client e il server devono entrambi usare lo stesso nome di voce.
IfSpec
Struttura dei dati generata da Stub che specifica l'interfaccia da esportare. Un valore Null indica che non sono presenti handle di associazione da esportare (devono essere esportati solo gli UUID oggetto) e BindingVec viene ignorato.
BindingVec
Puntatore alle associazioni server da esportare. Un valore Null indica che non sono presenti handle di associazione da esportare (devono essere esportati solo gli UUID oggetto).
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 (devono essere esportati solo handle di associazione).
Valore restituito
Valore | Significato |
---|---|
|
Chiamata riuscita. |
|
Non c'era niente da esportare. |
|
L'handle di associazione non è valido. |
|
Si tratta del tipo errato di associazione per l'operazione. |
|
La sintassi del nome non è valida. |
|
La sintassi del nome non è supportata. |
|
Il nome è incompleto. |
|
Nessun privilegio per l'operazione name-service. |
|
Il servizio dei nomi non è disponibile. |
Osservazioni
La funzione RpcNsBindingExport
A partire da 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 dei nomi e sono visibili anche dopo il riavvio. Le esportazioni non autorizzate non vengono mantenute. 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 server gestisce un client può usare per accedere al server. Un'applicazione server chiama anche la funzione RpcNsBindingExport per offrire pubblicamente gli UUID oggetto delle risorse offerte, se presenti, nel database name-service.
Un server può esportare interfacce e oggetti in una singola chiamata a RpcNsBindingExportoppure può 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 funzione RpcServerUseProtseq deve essere registrato anche con il database di mapping degli endpoint locale chiamando RpcEpRegister o RpcEpRegisterNoReplace.
Un server non è necessario per esportare alcuna delle relative interfacce nel database name-service. Quando un server non viene esportato, solo i client che conoscono privatamente le informazioni di associazione del server possono accedere alle relative interfacce. Ad esempio, un client con le informazioni necessarie per costruire un'associazione di stringhe può chiamare il RpcBindingFromStringBinding per creare un handle di associazione per effettuare chiamate di procedura remota a un server.
Prima di chiamare RpcNsBindingExport, un server deve eseguire le operazioni seguenti:
- Registrare una o più sequenze di protocollo 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 più volte nella stessa voce del database del servizio nomi, la seconda e le successive chiamate a RpcNsBindingExport aggiungere le informazioni di associazione e gli UUID 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 per esistere. Di conseguenza, l'esportazione di solo UUID in una voce non esistente non ha alcun effetto e l'annullamento dell'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 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 |
rpcnsi.h (include Rpc.h) |
libreria |
Rpcns4.lib |
dll | Rpcns4.dll |