Condividi tramite


Funzione RpcNsBindingExportA (rpcnsi.h)

La funzione RpcNsBindingExport stabilisce una voce nome service-database con più handle di associazione e più oggetti per un server.

Nota Questa funzione non è supportata in Windows Vista e nei sistemi operativi successivi.
 

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
RPC_S_OK
Chiamata riuscita.
RPC_S_NOTHING_TO_EXPORT
Non c'era niente da esportare.
RPC_S_INVALID_BINDING
L'handle di associazione non è valido.
RPC_S_WRONG_KIND_OF_BINDING
Si tratta del tipo errato di associazione 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 name-service.
RPC_S_NAME_SERVICE_UNAVAILABLE
Il servizio dei nomi non è disponibile.
 
Nota Per un elenco di codici di errore validi, vedere RPC Return Values.
 

Osservazioni

La funzione RpcNsBindingExport consente a un'applicazione server di offrire pubblicamente un'interfaccia nel database name-service da usare da qualsiasi applicazione client.

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:

Il vettore restituito dalla funzione rpcServerInqBindings binding 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 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

Vedere anche

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

rpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf