Freigeben über


Portabilitätsmakros

Die RPC-Tools erreichen Modell-, Aufruf- und Namenskonventionsunabhängigkeit, indem sie Datentypen und Funktionsrückgabetypen in den generierten Stubdateien und Headerdateien mit Definitionen zuordnen, die für jede Plattform spezifisch sind. Diese Makrodefinitionen stellen sicher, dass alle Datentypen und Funktionen, die die Bezeichnung von __far erfordern, als Objekte angegeben werden.

Die folgende Abbildung zeigt die Makrodefinitionen, die der MIDL-Compiler auf Funktionsaufrufe zwischen RPC-Komponenten anwendet:

Diagramm, das die Makrodefinitionen zeigt, die MIDL für Funktionsaufrufe gilt.

RPC-Makros werden wie folgt definiert.

Definition BESCHREIBUNG
__RPC_API Wird auf Aufrufe angewendet, die vom Stub an die Benutzeranwendung ausgeführt werden. Beide Funktionen befinden sich im selben ausführbaren Programm.
__RPC_FAR Wird auf die Standardmakrodefinition für Zeiger angewendet. Diese Makrodefinition sollte als Teil der Signatur aller vom Benutzer bereitgestellten Funktionen angezeigt werden.
__RPC_STUB Wird auf Aufrufe angewendet, die von der Laufzeitbibliothek an den Stub ausgeführt werden. Diese Aufrufe können als privat betrachtet werden.
__RPC_USER Wird auf Aufrufe angewendet, die von der Laufzeitbibliothek an die Benutzeranwendung ausgeführt werden. Diese überschreiten die Grenze zwischen einer DLL und einer Anwendung.
RPC_ENTRY Wird auf Aufrufe angewendet, die von der Anwendung oder dem Stub an die Laufzeitbibliothek ausgeführt werden. Diese Makrodefinition wird auf alle RPC-Laufzeitfunktionen angewendet.

Um eine korrekte Verknüpfung mit den Microsoft RPC-Laufzeitbibliotheken, Stubs und Supportroutinen zu ermöglichen, müssen einige vom Benutzer bereitgestellte Funktionen diese Makros auch in die Funktionsdefinition einschließen. Verwenden Sie das Makro __RPC_API , wenn Sie die Funktionen definieren, die der Speicherverwaltung, benutzerdefinierten Bindungshandles und dem attribut transmit_as zugeordnet sind, und verwenden Sie das Makro __RPC_USER , wenn Sie die dem Kontexthandle zugeordnete Ablaufroutine für den Kontext definieren. Geben Sie die Funktionen wie die folgenden an:

__RPC_USER midl_user_allocate(...)

__RPC_USER midl_user_free(...)

__RPC_USER handletype_bind(...)

__RPC_USER handletype_unbind(...)

__RPC_USER Typ_to_local

__RPC_USER Typ_from_local

__RPC_USER type_to_xmit(...)

__RPC_USER Typ_from_xmit(...)

__RPC_USER Typ_free_local

__RPC_USER Typ_free_inst(...)

__RPC_USER Typ_free_xmit(...)

__RPC_USER context_rundown(...)

Hinweis

Alle Zeigerparameter in diesen Funktionen müssen mithilfe des Makros __RPC_FAR angegeben werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Rpc.h