Condividi tramite


Funzione RpcNsBindingLookupNext (rpcnsi.h)

La funzione RpcNsBindingLookupNext restituisce un elenco di handle di associazione compatibili per un'interfaccia specificata e facoltativamente un oggetto.

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

Sintassi

RPC_STATUS RpcNsBindingLookupNext(
  RPC_NS_HANDLE      LookupContext,
  RPC_BINDING_VECTOR **BindingVec
);

Parametri

LookupContext

Handle name-service restituito dalla funzione RpcNsBindingLookupBegin .

BindingVec

Restituisce l'indirizzo di un puntatore a un vettore di handle di associazione server compatibili con il client.

Valore restituito

Valore Significato
RPC_S_OK
La chiamata ha avuto esito positivo.
RPC_S_NO_MORE_BINDINGS
Non più associazioni.
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 RpcNsBindingLookupNext restituisce un vettore di handle di associazione server compatibili con il client per un server che offre l'interfaccia e l'UUID dell'oggetto specificati dai parametri IfSpec e ObjUuid nella funzione RpcNsBindingLookupBegin . Confronto con RpcNsBindingImportNext, che restituisce un singolo handle di associazione server compatibile.

La funzione RpcNsBindingLookupNext comunica solo con il database name-service, non direttamente con i server.

Con Windows 2000, l'ambiente RPC usa Active Directory come database nome-servizio e l'ordine in cui l'ambiente di runtime esegue la ricerca è il seguente:

  • Cercare la cache locale.
  • Se la voce non viene trovata nella cache locale, cercare Active Directory del computer.
  • Se la voce non viene trovata nel computer locale, inviare richieste di trasmissione a tutti gli altri servizi di Active Directory nel dominio.

    Si noti che se la voce esiste in Active Directory, ma non sono presenti informazioni associate alla voce, l'ambiente di runtime non emetterà questa richiesta di trasmissione.

Nelle chiamate successive, la funzione RpcNsBindingLookupNext attraversa le voci del database name-service, raccogliendo handle di binding server compatibili con il client da ogni voce.

Quando Microsoft Active Directory è il database nome-servizio, RpcNsBindingLookupNext attraversa il database solo se il nome della voce specificato è Null e la voce predefinita (nel Registro di sistema) non è definita o vuota. Inoltre, poiché le voci miste non sono consentite in Active Directory, la funzione cerca solo nomi di voci del server, non gruppi o nomi di profilo.

Quando il servizio directory di celle DCE (CDS) è il database name-service e la voce in cui la ricerca inizia contiene handle di associazione oltre a nomi di gruppo o profilo, RpcNsBindingLookupNext restituisce gli handle di associazione da EntryName prima di cercare il gruppo o il profilo. Ciò significa che la funzione può restituire un vettore parzialmente completo prima di elaborare i membri del gruppo o del profilo.

L'handle di associazione compatibile restituito contiene sempre un UUID dell'oggetto, il valore di cui dipende dal parametro ObjUuid nella funzione RpcNsBindingImportBegin . Se è stato specificato un UUID oggetto non Null , l'handle di associazione restituito contiene tale oggetto UUID. Se, tuttavia, è stato specificato un valore UUID o Null dell'oggetto Null, l'oggetto UUID restituito è un risultato delle possibilità seguenti:

  • Se il server non esportava alcun UUID oggetto, l'handle di associazione restituito contiene un NIL object UUID.
  • Se il server esporta un UUID oggetto, l'handle di associazione restituito contiene tale oggetto UUID.
  • Se il server esporta più UUID oggetto, l'handle di associazione restituito contiene uno degli UUID dell'oggetto. L'operazione import-next seleziona l'UUID dell'oggetto restituito in modo non deterministico. Di conseguenza, un UUID di oggetto diverso può essere restituito per ogni handle di associazione compatibile da una singola voce del server.
Dal vettore restituito degli handle di associazione server, l'applicazione client può usare i propri criteri per selezionare singoli handle di associazione oppure l'applicazione può chiamare la funzione RpcNsBindingSelect per selezionare un handle di associazione. Le funzioni RpcBindingToStringBinding e RpcStringBindingParse saranno utili per un client che crea i propri criteri di selezione.

L'applicazione client può usare l'handle di associazione selezionato per tentare di eseguire una chiamata di routine remota al server. Se il client non riesce a stabilire una relazione con il server, può selezionare un altro handle di associazione dal vettore. Quando sono stati usati tutti gli handle di associazione nel vettore, l'applicazione client chiama di nuovo RpcNsBindingLookupNext .

Ogni volta che il client chiama RpcNsBindingLookupNext, la funzione restituisce un altro vettore di handle di associazione. Gli handle di associazione restituiti in ogni vettore sono non ordinati. I vettori restituiti da più chiamate a questa funzione sono anche non ordinati.

Un client chiama la funzione RpcNsBindingInqEntryName per ottenere il nome della voce del server di database name-service proveniente dall'associazione.

Quando la ricerca raggiunge la fine del database name-service, RpcNsBindingLookupNext restituisce uno stato di RPC_S_NO_MORE_BINDINGS e restituisce un valore BindingVec di NULL.

La funzione RpcNsBindingLookupNext alloca l'archiviazione per i dati a cui fa riferimento il parametro BindingVec restituito. Al termine di un'applicazione client con il vettore, deve chiamare la funzione RpcBindingVectorFree per deallocare l'archiviazione. Ogni chiamata a RpcNsBindingLookupNext richiede una chiamata corrispondente a RpcBindingVectorFree.

Il client è responsabile della chiamata alla funzione RpcNsBindingLookupDone per eliminare il contesto di ricerca oppure se si vuole che l'applicazione inizi una nuova ricerca per i server compatibili.

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 rpcnsi.h (include Rpc.h)
Libreria Rpcns4.lib
DLL Rpcns4.dll

Vedi anche

RpcBindingToStringBinding

RpcBindingVectorFree

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcStringBindingParse