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.

Nota Questa funzione non è supportata nei sistemi operativi Windows Vista e versioni successive.
 

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
RPC_S_OK
La chiamata ha avuto esito positivo.
RPC_S_NOTHING_TO_EXPORT
Non c'era nulla da esportare.
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.
RPC_S_INVALID_NAME_SYNTAX
La sintassi del nome non è valida.
RPC_S_UNSUPPORTED_NAME_SYNTAX
La sintassi del nome non è supportata.
RPC_S_INCOMPLETE_NAME
Il nome è incompleto.
RPC_S_NO_NS_PRIVILEGE
Nessun privilegio per l'operazione nome-servizio.
RPC_S_NAME_SERVICE_UNAVAILABLE
Il servizio nome non è disponibile.
 
Nota Per un elenco di codici di errore validi, vedere Valori restituiti RPC.
 

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:

Il vettore restituito dalla funzione RpcServerInqBindings diventa il parametro Binding per RpcNsBindingExport. Per impedire l'esportazione di un'associazione, impostare l'elemento vettore selezionato su un valore Null.

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

Vedi anche

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf