Funzione RpcNsBindingLookupNext (rpcnsi.h)
La funzione RpcNsBindingLookupNext restituisce un elenco di handle di associazione compatibili per un'interfaccia specificata e facoltativamente un oggetto.
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 |
---|---|
|
La chiamata ha avuto esito positivo. |
|
Non più associazioni. |
|
Il servizio nome non è disponibile. |
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.
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.
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 |