RpcNsBindingLookupNext-Funktion (rpcnsi.h)
Die RpcNsBindingLookupNext-Funktion gibt eine Liste kompatibler Bindungshandles für eine angegebene Schnittstelle und optional ein -Objekt zurück.
Syntax
RPC_STATUS RpcNsBindingLookupNext(
RPC_NS_HANDLE LookupContext,
RPC_BINDING_VECTOR **BindingVec
);
Parameter
LookupContext
Name-Service-Handle, das von der RpcNsBindingLookupBegin-Funktion zurückgegeben wird.
BindingVec
Gibt die Adresse eines Zeigers auf einen Vektor clientkompatibler Serverbindungshandles zurück.
Rückgabewert
Wert | Bedeutung |
---|---|
|
Der Aufruf war erfolgreich. |
|
Keine Bindungen mehr. |
|
Der Namensdienst ist nicht verfügbar. |
Hinweise
Die RpcNsBindingLookupNext-Funktion gibt einen Vektor clientkompatibler Serverbindungshandles für einen Server zurück, der die Schnittstelle und die Objekt-UUID bietet, die durch die Parameter IfSpec und ObjUuid in der Funktion RpcNsBindingLookupBegin angegeben wird. (Vergleichen Sie dies mit RpcNsBindingImportNext, das ein einzelnes kompatibles Serverbindungshandle zurückgibt.)
Die RpcNsBindingLookupNext-Funktion kommuniziert nur mit der Name-Dienst-Datenbank, nicht direkt mit Servern.
Ab Windows 2000 verwendet die RPC-Umgebung Active Directory als Name-Dienst-Datenbank, und die Reihenfolge, in der die Laufzeitumgebung die Suche ausführt, lautet wie folgt:
- Durchsuchen Sie den lokalen Cache.
- Wenn der Eintrag im lokalen Cache nicht gefunden wurde, suchen Sie in Active Directory dieses Computers.
- Wenn der Eintrag auf dem lokalen Computer nicht gefunden wird, senden Sie Broadcastanforderungen an alle anderen Active Directory-Dienste in der Domäne.
Beachten Sie, dass, wenn der Eintrag im Active Directory vorhanden ist, dem Eintrag jedoch keine Informationen zugeordnet sind, die Laufzeitumgebung diese Übertragungsanforderung nicht ausgibt.
Wenn Microsoft Active Directory die Name-Service-Datenbank ist, durchläuft RpcNsBindingLookupNext die Datenbank nur, wenn der angegebene Eintragsname NULL ist und der Standardeintrag (in der Registrierung) nicht definiert oder leer ist. Da gemischte Einträge in Active Directory nicht zulässig sind, sucht die Funktion nur nach Servereintragsnamen, nicht nach Gruppen- oder Profilnamen.
Wenn der DCE Cell Directory Service (CDS) die Name-Service-Datenbank ist und der Eintrag, an dem die Suche beginnt, zusätzlich zu Gruppen- oder Profilnamen Bindungshandles enthält, gibt RpcNsBindingLookupNext die Bindungshandles von EntryName zurück, bevor die Gruppe oder das Profil durchsucht wird. Dies bedeutet, dass die Funktion einen teilweise vollständigen Vektor zurückgeben kann, bevor die Mitglieder der Gruppe oder des Profils verarbeitet werden.
Das zurückgegebene kompatible Bindungshandle enthält immer eine Objekt-UUID, deren Wert vom ObjUuid-Parameter in der RpcNsBindingImportBegin-Funktion abhängt. Wenn eine Objekt-UUID ungleich NULL angegeben wurde, enthält das zurückgegebene Bindungshandle diese Objekt-UUID. Wenn jedoch eine NULL-Objekt-UUID oder ein NULL-Wert angegeben wurde, ist die zurückgegebene Objekt-UUID das Ergebnis der folgenden Möglichkeiten:
- Wenn der Server keine Objekt-UUIDs exportiert hat, enthält das zurückgegebene Bindungshandle eine Null-Objekt-UUID.
- Wenn der Server eine Objekt-UUID exportiert hat, enthält das zurückgegebene Bindungshandle diese Objekt-UUID.
- Wenn der Server mehrere Objekt-UUIDs exportiert hat, enthält das zurückgegebene Bindungshandle eine der Objekt-UUIDs. Der Import-Next-Vorgang wählt die zurückgegebene Objekt-UUID auf nicht deterministische Weise aus. Daher kann eine andere Objekt-UUID für jedes kompatible Bindungshandle von einem einzelnen Servereintrag zurückgegeben werden.
Die Clientanwendung kann das ausgewählte Bindungshandle verwenden, um zu versuchen, einen Remoteprozeduraufruf an den Server durchzuführen. Wenn der Client keine Beziehung mit dem Server herstellt, kann er ein anderes Bindungshandle aus dem Vektor auswählen. Wenn alle Bindungshandles im Vektor verwendet wurden, ruft die Clientanwendung RpcNsBindingLookupNext erneut auf.
Jedes Mal, wenn der Client RpcNsBindingLookupNext aufruft, gibt die Funktion einen weiteren Vektor von Bindungshandles zurück. Die in jedem Vektor zurückgegebenen Bindungshandles sind ungeordnet. Die von mehreren Aufrufen dieser Funktion zurückgegebenen Vektoren sind ebenfalls ungeordnet.
Ein Client ruft die RpcNsBindingInqEntryName-Funktion auf, um den Namen des Name-Service-Datenbankservereintrags abzurufen, von dem die Bindung stammt.
Wenn die Suche das Ende der Name-Service-Datenbank erreicht, gibt RpcNsBindingLookupNext eine status von RPC_S_NO_MORE_BINDINGS und den BindingVec-WertNULL zurück.
Die RpcNsBindingLookupNext-Funktion reserviert Speicher für die Daten, auf die durch den zurückgegebenen BindingVec-Parameter verwiesen wird. Wenn eine Clientanwendung mit dem Vektor fertig ist, muss sie die RpcBindingVectorFree-Funktion aufrufen, um die Zuordnung des Speichers aufschlüsseln zu können. Jeder Aufruf von RpcNsBindingLookupNext erfordert einen entsprechenden Aufruf von RpcBindingVectorFree.
Der Client ist dafür verantwortlich, die RpcNsBindingLookupDone-Funktion aufzurufen, um den Nachschlagekontext zu löschen, oder wenn Die Anwendung eine neue Suche nach kompatiblen Servern starten soll.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | rpcnsi.h (rpc.h einschließen) |
Bibliothek | Rpcns4.lib |
DLL | Rpcns4.dll |