Rückrufattribut

Das [Rückruf] -Attribut deklariert eine statische Rückruffunktion, die auf der Clientseite der verteilten Anwendung vorhanden ist. Rückruffunktionen bieten dem Server die Möglichkeit, Code auf dem Client auszuführen.

[callback [ , function-attr-list] ] type-specifier [ptr-declarator] function-name(
        [ [attribute-list] ] type-specifier [declarator]
        , ...);

Parameter

function-attr-list

Gibt null oder mehr Attribute an, die für die Funktion gelten. Gültige Funktionsattribute sind [local]; das Zeigerattribute [ref], [unique] oder [ptr]; und die Verwendungsattribute [Zeichenfolge], [ignorieren] und [context_handle]. Trennen Sie mehrere Attribute durch Kommas.

Typspezifizierer

Gibt einen base_type, eine Struktur, eine Union, einen Enumerationstyp oder einen Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typbezeichner vorangestellt werden.

ptr-deklarator

Gibt null oder mehr Zeiger-Deklaratoren an. Ein Zeigerdeklarations-Deklarator ist mit dem in C verwendeten Zeiger-Deklarator identisch. es wird aus dem *-Designator, Modifizierern wie far und dem Qualifizierer const erstellt.

Funktionsname

Gibt den Namen der Remoteprozedur an.

attribut-list

Gibt null oder mehr Richtungsattribute, Feldattribute, Nutzungsattribute und Zeigerattribute an, die für den angegebenen Parametertyp geeignet sind. Trennen Sie mehrere Attribute durch Kommas.

declarator

Gibt einen C-Standard-Deklarator an, z. B. Bezeichner, Zeiger-Deklaratoren und Array-Deklaratoren. Weitere Informationen finden Sie unter Array- und Sized-Pointer Attribute, Arrays und Arrays und Zeiger. Der Parametername-Bezeichner ist optional.

Bemerkungen

Die Funktion [Rückruf] ist nützlich, wenn der Server Informationen vom Client abrufen muss. Wenn Serveranwendungen unter Windows 3 unterstützt wurden. x, der Server könnte einen Aufruf einer Remoteprozedur unter Windows 3 ausführen. x Server, um die erforderlichen Informationen abzurufen. Die Rückruffunktion erfüllt denselben Zweck und ermöglicht es dem Server, den Client nach Informationen im Kontext des ursprünglichen Aufrufs zu abfragen.

Rückrufe sind Spezielle Fälle von Remoteaufrufen, die als Teil eines einzelnen Threads ausgeführt werden. Ein Rückruf wird im Kontext eines Remoteaufrufs ausgegeben. Jede Remoteprozedur, die als Teil derselben Schnittstelle wie die statische Rückruffunktion definiert ist, kann die Rückruffunktion aufrufen.

Es ist wichtig zu beachten, dass die Verwendung von [Rückruf] bei der Multithreadprogrammierung nicht empfohlen wird. Als Single-Thread-Programmierfunktion ist sie nicht dafür ausgestattet, die Sicherheitsanforderungen einer Multithreadumgebung zu unterstützen.

Die RpcCancelThread-Funktion kann nicht verwendet werden, um einen Aufruf abzubrechen, der möglicherweise einen statischen Rückruf sendet. Wenn ein bestimmter Remoteprozeduraufruf nie zu einem Rückruf führt, kann er abgebrochen werden. Andernfalls kann ein Anruf nur abgebrochen werden, wenn garantiert werden kann, dass kein Rückruf für ihn ausgegeben wurde.

Nur die verbindungsorientierten und lokalen Protokollsequenzen unterstützen das Rückrufattribut. Die Größe der [out]-Daten für Rückrufe über die lokale Protokollsequenz ist auf 150 Bytes beschränkt. Wenn eine RPC-Schnittstelle eine verbindungslose Protokollsequenz (Datagramm) verwendet, schlagen Aufrufe von Prozeduren mit dem Rückrufattribut fehl.

Handles können nicht als Parameter in Rückruffunktionen verwendet werden. Da Rückrufe immer im Kontext eines Aufrufs ausgeführt werden, wird das Vom Client zum Ausführen des Serveraufrufs verwendete Bindungshandle auch als Bindungshandle vom Server an den Client verwendet.

Rückrufe können in beliebiger Tiefe geschachtelt werden.

Beispiele

[callback] HRESULT DisplayString([in, string] char * p1);

Weitere Informationen

Arrays

MIDL-Basistypen

const

context_handle

Enum

IDL-Datei (Interface Definition)

Ignorieren

lokal

/Osf

Ref

Ptr

Schnur

Struktur

union

Einzigartige

RpcCancelThread