Freigeben über


Registrieren von Schnittstellen

In diesem Abschnitt wird der Prozess der Registrierung einer RPC-Schnittstelle ausführlich erläutert.

Die Informationen in diesem Abschnitt werden in den folgenden Themen vorgestellt:

Schnittstellenregistrierungsfunktionen

Server registrieren ihre Schnittstellen, indem sie die RpcServerRegisterIf-Funktion aufrufen. Komplexe Serverprogramme unterstützen häufig mehrere Schnittstellen. Serveranwendungen müssen diese Funktion für jede von ihnen unterstützte Schnittstelle einmal aufrufen.

Außerdem können Server mehrere Versionen derselben Schnittstelle unterstützen, die jeweils eine eigene Implementierung der Funktionen der Schnittstelle aufweisen. Wenn Ihr Serverprogramm dies tut, muss es eine Reihe von Einstiegspunkten bereitstellen. Ein Einstiegspunkt ist eine Managerroutine, die Aufrufe für eine Version einer Schnittstelle sendet. Für jede Version der Schnittstelle muss ein Einstiegspunkt vorhanden sein. Die Gruppe der Einstiegspunkte wird als Einstiegspunktvektor bezeichnet. Ausführliche Informationen finden Sie unter Einstiegspunktvektoren.

Zusätzlich zur Standardfunktion RpcServerRegisterIf unterstützt RPC auch andere Schnittstellenregistrierungsfunktionen. Die RpcServerRegisterIf2-Funktion erweitert die Funktionen von RpcServerRegisterIf , indem Sie eine Reihe von Registrierungsflags angeben können (siehe Schnittstellenregistrierungsflags), die maximale Anzahl gleichzeitiger Remoteprozeduraufrufe, die der Server akzeptieren kann, und die maximale Größe eingehender Datenblöcke in Bytes.

Die RPC-Bibliothek enthält auch eine Funktion namens RpcServerRegisterIfEx. Wie die RpcServerRegisterIf-Funktion registriert diese Funktion eine Schnittstelle. Ihr Serverprogramm kann diese Funktion auch verwenden, um eine Reihe von Registrierungsflags (siehe Schnittstellenregistrierungsflags), die maximale Anzahl gleichzeitiger Remoteprozeduraufrufanforderungen, die der Server akzeptieren kann, und eine Sicherheitsrückruffunktion anzugeben.

Die Funktionen RpcServerRegisterIf, RpcServerRegisterIfEx und RpcServerRegisterIf2 legen Werte in der Registrierungstabelle der internen Schnittstelle fest. Diese Tabelle wird verwendet, um die Schnittstellen-UUID und Objekt-UUIDs einem Manager-EPV zuzuordnen. Der Manager-EPV ist ein Array von Funktionszeigern, das genau einen Funktionszeiger für jeden Funktionsprototyp in der in der IDL-Datei angegebenen Schnittstelle enthält.

Informationen zum Bereitstellen mehrerer EPVs zum Bereitstellen mehrerer Implementierungen der Schnittstelle finden Sie unter Implementierungen mehrerer Schnittstellen.

Die Laufzeitbibliothek verwendet die Schnittstellenregistrierungstabelle (festgelegt durch Aufrufe der Funktion RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2) und die Objektregistrierungstabelle (festgelegt durch Aufrufe der Funktion RpcObjectSetType), um die Schnittstelle und Objekt-UUIDs dem Funktionszeiger zuzuordnen.

Wenn Ihr Serverprogramm eine Schnittstelle aus der RPC-Laufzeitbibliotheksregistrierung entfernen soll, rufen Sie die RpcServerUnregisterIf-Funktion auf. Nachdem die Schnittstelle aus der Registrierung entfernt wurde, akzeptiert die RPC-Laufzeitbibliothek keine neuen Aufrufe für diese Schnittstelle mehr.

Einstiegspunktvektoren

Der Manager-Einstiegspunktvektor (Manager Entry Point Vector, EPV) ist ein Array von Funktionszeigern, die auf Implementierungen der in der IDL-Datei angegebenen Funktionen verweisen. Die Anzahl der Elemente im Array entspricht der Anzahl von Funktionen, die in der IDL-Datei angegeben sind. RPC unterstützt mehrere Einstiegspunktvektoren, die mehrere Implementierungen der in der Schnittstelle angegebenen Funktionen darstellen.

Der MIDL-Compiler generiert automatisch einen Manager-EPV-Datentyp für die Verwendung beim Erstellen von Manager-EPVs. Der Datentyp heißt if-name**_SERVER_EPV**, wobei if-name den Schnittstellenbezeichner in der IDL-Datei angibt.

Der MIDL-Compiler erstellt und initialisiert automatisch einen Standard-Manager-EPV unter der Annahme, dass für jede Prozedur in der Schnittstelle eine Managerroutine mit demselben Namen vorhanden ist und in der IDL-Datei angegeben wird.

Wenn ein Server mehrere Implementierungen derselben Schnittstelle bietet, muss der Server für jede Implementierung einen zusätzlichen Manager-EPV erstellen. Jede EPV muss genau einen Einstiegspunkt (Adresse einer Funktion) für jede in der IDL-Datei definierte Prozedur enthalten. Die Serveranwendung deklariert und initialisiert eine Manager-EPV-Variable vom Typ if-name**_SERVER_EPV** für jede zusätzliche Implementierung der Schnittstelle. Um die EPVs zu registrieren, ruft er einmal RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 für jeden unterstützten Objekttyp auf.

Wenn der Client einen Remoteprozeduraufruf an den Server ausgibt, wird der EPV mit dem Funktionszeiger basierend auf der Schnittstellen-UUID und dem Objekttyp ausgewählt. Der Objekttyp wird von der Objekt-UUID durch die Objektabfragefunktion oder die tabellengesteuerte Zuordnung abgeleitet, die von RpcObjectSetType gesteuert wird.

Manager-EPVs

Standardmäßig verwendet der MIDL-Compiler die Prozedurnamen aus der IDL-Datei einer Schnittstelle, um einen Manager-EPV zu generieren, den der Compiler direkt in den Serverstub platziert. Dieser Standard-EPV wird mithilfe der in der Schnittstellendefinition deklarierten Prozedurnamen statisch initialisiert.

Um einen Manager mithilfe des Standard-EPV zu registrieren, geben Sie NULL als Wert des MgrEpv-Parameters in einem Aufruf der Funktion RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 an. Wenn die von einem Manager verwendeten Routinenamen denen der Schnittstellendefinition entsprechen, können Sie diesen Manager mithilfe des Standard-EPV der vom MIDL-Compiler generierten Schnittstelle registrieren. Sie können einen Manager auch mit einer EPV registrieren, die von der Serveranwendung zur Verfügung stellt.

Ein Server kann (und muss manchmal auch) einen EPV-Wert für einen Manager erstellen und registrieren, der nicht null für eine Schnittstelle ist. Um eine vom Serveranwendung bereitgestellte EPV auszuwählen, übergeben Sie die Adresse eines EPV, dessen Wert vom Server als Wert des MgrEpv-Parameters deklariert wurde. Ein Nicht-NULL-Wert für mgrEpv ein Parameter überschreibt immer einen Standard-EPV im Serverstub.

Der MIDL-Compiler generiert automatisch einen Manager-EPV-Datentyp (RPC_MGR_EPV) für eine Serveranwendung, die beim Erstellen von Manager-EPVs verwendet werden soll. Ein Manager-EPV muss genau einen Einstiegspunkt (Funktionsadresse) für jede in der IDL-Datei definierte Prozedur enthalten.

Ein Server muss in den folgenden Fällen eine EPV-Instanz ohne Null bereitstellen:

  • Wenn sich die Namen von Managerroutinen von den in der Schnittstellendefinition deklarierten Prozedurnamen unterscheiden
  • Wenn der Server die Standard-EPV zum Registrieren einer anderen Implementierung der Schnittstelle verwendet

Ein Server deklariert einen Manager-EPV, indem er eine Variable vom Typ if-name**_SERVER_EPV** für jede Implementierung der Schnittstelle initialisiert.

Registrieren einer einzelnen Implementierung einer Schnittstelle

Wenn ein Server nur eine Implementierung einer Schnittstelle bietet, ruft der Server RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 nur einmal auf. Im Standardfall verwendet der Server den Standard-Manager EPV. (Ausnahme ist, wenn der Manager Routinenamen verwendet, die sich von den in der Schnittstelle deklarierten unterscheiden.)

Für den Standardfall geben Sie die folgenden Werte für Aufrufe von RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 an:

  • Manager-EPVs

    Um die Standard-EPV zu verwenden, geben Sie einen NULL-Wert für den MgrEpv-Parameter an.

  • Managertyp UUID

    Registrieren Sie bei Verwendung des Standard-EPV die Schnittstelle mit einer UUID vom Typ nil manager, indem Sie entweder einen NULL-Wert oder eine null-UUID für den MgrTypeUuid-Parameter angeben. In diesem Fall werden alle Remoteprozeduraufrufe unabhängig von der Objekt-UUID in ihrem Bindungshandle an den Standard-EPV weitergeleitet, vorausgesetzt, es wurden keine RpcObjectSetType-Aufrufe ausgeführt.

    Sie können auch einen Nicht-Nil-Manager vom Typ UUID bereitstellen. In diesem Fall müssen Sie auch die RpcObjectSetType-Routine aufrufen.

Registrieren mehrerer Implementierungen einer Schnittstelle

Sie können mehrere Implementierungen der Remoteprozeduren bereitstellen, die in der IDL-Datei angegeben sind. Die Serveranwendung ruft RpcObjectSetType auf, um Objekt-UUIDs zum Typ UUIDs zuzuordnen, und ruft RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 auf, um Manager-EPVs dem Typ UUID zuzuordnen. Wenn ein Remoteprozeduraufruf mit seiner Objekt-UUID eingeht, ordnet die Laufzeitbibliothek des RPC-Servers die Objekt-UUID einer Typ-UUID zu. Die Serveranwendung verwendet dann den Typ UUID und die Schnittstellen-UUID, um den Manager-EPV auszuwählen.

Sie können auch Ihre eigene Funktion angeben, um die Zuordnung von Objekt-UUID zu Managertyp UUID aufzulösen. Sie geben die Zuordnungsfunktion an, wenn Sie RpcObjectSetInqFn aufrufen.

Um mehrere Implementierungen einer Schnittstelle anzubieten, muss ein Server jede Implementierung registrieren, indem er RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 separat aufruft. Für jede Implementierung, die ein Server registriert, stellt er den gleichen IfSpec-Parameter , aber ein anderes Paar von MgrTypeUuid - und MgrEpv-Parametern bereit.

Verwenden Sie bei mehreren Managern RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 wie folgt:

  • Manager-EPVs

    Um mehrere Implementierungen einer Schnittstelle anbieten zu können, muss ein Server Folgendes ausführen:

    Beachten Sie, dass sich der Server auch beim Standard-Manager EPV registrieren kann.

  • Managertyp UUID

    Geben Sie einen Managertyp UUID für jede EPV der Schnittstelle an. Die UUID vom Typ null (oder NULL-Wert ) für den MgrTypeUuid-Parameter kann für einen der Manager-EPVs angegeben werden. Jede Typ-UUID muss unterschiedlich sein.

Regeln für aufrufbare Manager-Routinen

Die RPC-Laufzeitbibliothek sendet einen eingehenden Remoteprozeduraufruf an einen Manager, der die angeforderte RPC-Schnittstelle anbietet. Wenn mehrere Manager für eine Schnittstelle registriert sind, muss die RPC-Laufzeitbibliothek einen davon auswählen. Um einen Manager auszuwählen, verwendet die RPC-Laufzeitbibliothek die Objekt-UUID, die durch das Bindungshandle des Aufrufs angegeben wird.

Die Laufzeitbibliothek wendet die folgenden Regeln an, wenn die Objekt-UUID eines Remoteprozeduraufrufs interpretiert wird:

  • UUIDs des Nil-Objekts

    Einer UUID des Nil-Objekts wird automatisch die UUID vom Typ "null" zugewiesen (es ist unzulässig, in der RpcObjectSetType-Routine eine Nil-Objekt-UUID anzugeben). Daher wird ein Remoteprozeduraufruf, dessen Bindungshandle eine Null-Objekt-UUID enthält, automatisch an den Manager weitergeleitet, der ggf. mit der UUID vom Typ "null" registriert ist.

  • Nicht-Nil-Objekt-UUIDs

    Im Prinzip sollte ein Remoteprozeduraufruf, dessen Bindungshandle eine Nicht-Null-Objekt-UUID enthält, von einem Manager verarbeitet werden, dessen Typ UUID dem Typ der Objekt-UUID entspricht. Die Identifizierung des richtigen Managers erfordert jedoch, dass der Server den Typ dieses Objekt-UUID durch Aufrufen der RpcObjectSetType-Routine angegeben hat.

    Wenn ein Server die RpcObjectSetType-Routine für eine Nicht-Nil-Objekt-UUID nicht aufruft, geht ein Remoteprozeduraufruf für diese Objekt-UUID an die Manager-EPV, die Remoteprozeduraufrufe mit einer UUID des Nullobjekts (d. h. der UUID vom Typ null) behandelt.

    Remoteprozeduraufrufe mit einer Nicht-Nil-Objekt-UUID im Bindungshandle können nicht ausgeführt werden, wenn der Server diesem Non-Nil-Objekt durch Aufrufen der RpcObjectSetType-Routine einen Typ UUID zugewiesen hat, aber nicht auch eine Manager-EPV für diesen Typ UUID registriert hat, indem RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 aufgerufen wurde.

In der folgenden Tabelle sind die Aktionen zusammengefasst, die die Laufzeitbibliothek zum Auswählen der Managerroutine verwendet.

Objekt-UUID des Aufrufs Serversatztyp für Objekt-UUID? Server registrierter EPV-Typ? Dispatching-Aktion
Nil Nicht zutreffend Ja Verwendet den Manager mit der UUID vom Typ "null".
Nil Nicht zutreffend Nein Fehler (RPC_S_UNSUPPORTED_TYPE); lehnt den Remoteprozeduraufruf ab.
Non-nil Ja Ja Verwendet den Manager mit dem gleichen Typ UUID.
Non-nil Nein Wird ignoriert. Verwendet den Manager mit der UUID vom Typ "null". Wenn kein Manager mit der UUID vom Typ "null" vorhanden ist, fehler (RPC_S_UNSUPPORTEDTYPE); lehnt den Remoteprozeduraufruf ab.
Non-nil Ja Nein Fehler (RPC_S_UNSUPPORTEDTYPE); lehnt den Remoteprozeduraufruf ab.

 

Die Objekt-UUID des Aufrufs ist die Objekt-UUID, die in einem Bindungshandle für einen Remoteprozeduraufruf gefunden wird.

Der Server legt den Typ der Objekt-UUID fest, indem RpcObjectSetType aufgerufen wird, um den Typ UUID für ein Objekt anzugeben.

Der Server registriert den Typ für den Manager-EPV, indem er RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 mit dem gleichen Typ UUID aufruft.

Hinweis

Der UUID des Nil-Objekts wird immer automatisch die UUID vom Typ "nil" zugewiesen. Es ist unzulässig, eine Null-Objekt-UUID in der RpcObjectSetType-Routine anzugeben.

 

Senden eines Remoteprozeduraufrufs an eine Server-Manager-Routine

Die folgenden Tabellen zeigen die Schritte, die die RPC-Laufzeitbibliothek ausführt, um einen Remoteprozeduraufruf an eine Server-Manager-Routine zu senden.

Ein einfacher Fall, in dem der Server die Standard-Manager-EPV registriert, wird in den folgenden Tabellen beschrieben.

Schnittstellenregistrierungstabelle

Schnittstellen-UUID Managertyp UUID Einstiegspunktvektor
uuid1 Nil Standard-EPV

 

Objektregistrierungstabelle

Objekt-UUID Objekttyp
Nil Nil
(Alle anderen Objekt-UUID) Nil

 

Zuordnen des Bindungshandles zu einem Einstiegspunktvektor (EPV)

Schnittstellen-UUID (vom Clientbindungshandle) Objekt-UUID (vom Clientbindungshandle) Objekttyp (aus der Objektregistrierungstabelle) Manager-EPV (aus der Schnittstellenregistrierungstabelle)
uuid1 Nil Nil Standard-EPV
Wie oben uuidA Nil Standard-EPV

 

In den folgenden Schritten werden die Aktionen beschrieben, die von der Laufzeitbibliothek des RPC-Servers ausgeführt werden, wie in den vorherigen Tabellen gezeigt, wenn sie von einem Client mit der Schnittstelle UUID uuid1 aufgerufen wird.

  1. Der Server ruft RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 auf, um eine Schnittstelle, die er bietet, dem Nil-Manager-Typ UUID und dem von MIDL generierten Standard-Manager-EPV zuzuordnen. Dieser Aufruf fügt einen Eintrag in der Schnittstellenregistrierungstabelle hinzu. Die Schnittstellen-UUID ist im IfSpec-Parameter enthalten.

  2. Standardmäßig ordnet die Objektregistrierungstabelle alle Objekt-UUIDs der UUID vom Typ "null" zu. In diesem Beispiel ruft der Server RpcObjectSetType nicht auf.

  3. Die Serverlaufzeitbibliothek empfängt einen Remoteprozedurcode, der die Schnittstellen-UUID enthält, zu der der Aufruf gehört, und die Objekt-UUID aus dem Bindungshandle des Aufrufs.

    In den folgenden Funktionsreferenzeinträgen erfahren Sie, wie eine Objekt-UUID in einem Bindungshandle festgelegt wird:

  4. Mithilfe der Schnittstellen-UUID aus dem Remoteprozeduraufruf sucht die Laufzeitbibliothek des Servers diese Schnittstellen-UUID in der Schnittstellenregistrierungstabelle.

    Wenn der Server die Schnittstelle nicht mit RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 registriert hat, wird der Remoteprozeduraufruf mit einem RPC_S_UNKNOWN_IF status Code an den Aufrufer zurückgegeben.

  5. Mithilfe der Objekt-UUID aus dem Bindungshandle sucht die Laufzeitbibliothek des Servers diese Objekt-UUID in der Objektregistrierungstabelle. In diesem Beispiel werden alle Objekt-UUIDs dem Objekttyp nil zugeordnet.

  6. Die Laufzeitbibliothek des Servers sucht den Typ nil manager in der Schnittstellenregistrierungstabelle.

  7. Die Kombination der Schnittstellen-UUID und des Null-Typs in der Schnittstellenregistrierungstabelle wird in die Standard-EPV aufgelöst, die die Server-Manager-Routinen enthält, die für die im Remoteprozeduraufruf gefundene Schnittstellen-UUID ausgeführt werden sollen.

Angenommen, der Server bietet mehrere Schnittstellen und mehrere Implementierungen jeder Schnittstelle, wie in den folgenden Tabellen beschrieben.

Schnittstellenregistrierungstabelle

Schnittstellen-UUID Manager-Typ UUID Einstiegspunktvektor
uuid1 Nil epv1
uuid1 uuid3 epv4
uuid2 uuid4 epv2
uuid2 uuid7 epv3

 

Objektregistrierungstabelle

Objekt-UUID Objekttyp
uuidA uuid3
uuidB uuid7
uuidC uuid7
uuidD uuid3
uuidE uuid3
uuidF uuid8
Nil Nil
(Jede andere UUID) Nil

 

Zuordnen des Bindungshandles zu einem Einstiegspunktvektor

Schnittstellen-UUID (vom Clientbindungshandle) Objekt-UUID (aus Clientbindungshandle) Objekttyp (aus der Objektregistrierungstabelle) Manager EPV (aus der Schnittstellenregistrierungstabelle)
uuid1 Nil Nil epv1
uuid1 uuidA uuid3 epv4
uuid1 uuidD uuid3 epv4
uuid1 uuidE uuid3 epv4
uuid2 uuidB uuid7 epv3
uuid2 uuidC uuid7 epv3

 

Die folgenden Schritte beschreiben die Aktionen, die die Laufzeitbibliothek des Servers ausführt, wie in den vorherigen Tabellen gezeigt, wenn ein Client mit der Schnittstelle UUID uuid2 und der Objekt-UUID uuidC sie aufruft .

  1. Der Server ruft RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 auf, um die Schnittstellen, die er bietet, den verschiedenen Manager-EPVs zuzuordnen. Die Einträge in der Schnittstellenregistrierungstabelle spiegeln vier Aufrufe von RpcServerRegisterIf, RpcServerRegisterIfEx oder RpcServerRegisterIf2 wider, um zwei Schnittstellen mit zwei Implementierungen (EPVs) für jede Schnittstelle anzubieten.

  2. Der Server ruft RpcObjectSetType auf, um den Typ jedes angebotenen Objekts festzulegen. Zusätzlich zur Standardzuordnung des nil-Objekts zu einem Nil-Typ werden auch alle anderen Objekt-UUIDs, die nicht explizit in der Objektregistrierungstabelle gefunden werden, der UUID vom Typ nil zugeordnet.

    In diesem Beispiel ruft der Server die RpcObjectSetType-Routine sechsmal auf.

  3. Die Serverlaufzeitbibliothek empfängt einen Remoteprozeduraufruf mit der Schnittstellen-UUID, zu der der Aufruf gehört, und einer Objekt-UUID aus dem Bindungshandle des Aufrufs.

  4. Mithilfe der Schnittstellen-UUID aus dem Remoteprozeduraufruf sucht die Laufzeitbibliothek des Servers die Schnittstellen-UUID in der Schnittstellenregistrierungstabelle.

  5. Mithilfe der UUID des UUID-Objekts aus dem Bindungshandle sucht die Laufzeitbibliothek des Servers die Objekt-UUID in der Objektregistrierungstabelle und findet, dass sie dem Typ uuid7 zugeordnet ist.

  6. Um den Managertyp zu finden, kombiniert die Laufzeitbibliothek des Servers die Schnittstellen-UUID, uuid2 und den Typ uuid7 in der Schnittstellenregistrierungstabelle. Dadurch wird in epv3 aufgelöst, das die Server-Manager-Routine enthält, die für den Remoteprozeduraufruf ausgeführt werden soll.

Die Routinen in epv2 werden nie ausgeführt, da der Server die RpcObjectSetType-Routine nicht aufgerufen hat, um der Objektregistrierungstabelle Objekte mit dem Typ UUID uuid4 hinzuzufügen.

Ein Remoteprozeduraufruf mit der Schnittstelle UUID uuid2 und dem Objekt UUID uuidF wird mit einem RPC_S_UNKNOWN_MGR_TYPE status Code an den Aufrufer zurückgegeben, da der Server rpcServerRegisterIf,RpcServerRegisterIfEx oder RpcServerRegisterIf2 nicht aufgerufen hat, um die Schnittstelle beim Managertyp uuid8 zu registrieren.

Rückgabewerte

Diese Funktion gibt einen der folgenden Werte zurück.

Wert Bedeutung
RPC_S_OK Erfolg
RPC_S_TYPE_ALREADY_REGISTERED Typ UUID bereits registriert

 

Bereitstellen einer eigenen Objektabfragefunktion

Betrachten Sie einen Server, der Tausende von Objekten mit vielen verschiedenen Typen verwaltet. Wann immer der Server gestartet wurde, musste die Serveranwendung die Funktion RpcObjectSetType für jedes objekt aufrufen, auch wenn Clients möglicherweise nur auf einige von ihnen verweisen (oder lange dauern, um auf sie zu verweisen). Diese Tausenden von Objekten befinden sich wahrscheinlich auf dem Datenträger, sodass das Abrufen ihrer Typen zeitaufwändig wäre. Außerdem würde die interne Tabelle, die die Objekt-UUID dem Managertyp UUID zuzuordnen, im Wesentlichen die Zuordnung duplizieren, die mit den Objekten selbst verwaltet wird.

Der Einfachheit halber enthält der RPC-Funktionssatz die Funktion RpcObjectSetInqFn. Mit dieser Funktion stellen Sie Ihre eigene Objektabfragefunktion bereit.

Als Beispiel können Sie Ihre eigene Objektabfragefunktion bereitstellen, wenn Sie Objekte 100–199 dem Typ 1, 200–299 dem Typ Nummer 2 usw. zuordnen. Die Objektabfragefunktion kann auch auf ein verteiltes Dateisystem erweitert werden, in dem die Serveranwendung nicht über eine Liste aller verfügbaren Dateien (Objekt-UUIDs) verfügt, oder wenn Objekt-UUIDs-Namensdateien im Dateisystem vorhanden sind und Sie nicht alle Zuordnungen zwischen Objekt-UUIDs und Typ-UUIDs vorab laden möchten.

RpcBindingFromStringBinding

RpcBindingSetObject

RpcNsBindingExport

RpcNsBindingImportBegin

RpcNsBindingLookupBegin

RpcObjectSetType

RpcServerRegisterIf

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx