message-Attribut
Das Attribut [message] gibt an, dass der Remoteprozeduraufruf als Nachricht vom Client an den Server behandelt werden soll.
[message, optional-attribute-list] void function-name(
[in, optional-parameter-attributes] param-name,. . .);
-
optional-attribute-list
-
Andere Attribute, die für die Funktion gelten. Nur die Attribute [local], [nocode], [code] und [optimize] können mit dem [message]- Attribut verwendet werden.
-
Funktionsname
-
Der Name der Funktion, wie in der IDL-Datei definiert.
-
optional-parameter-attributes
-
Null oder mehr MIDL-Attribute, die auf den Parameter angewendet werden.
-
param-name
-
Der Name des Parameters, wie in der IDL-Datei definiert.
Als Nachrichten vom Client werden Remoteprozeduraufrufe mit dem [message] -Attribut asynchron über den ncadg_mq Nachrichtenwarteschlangentransport an den Server übermittelt. Sie können Messaging im synchronen Modus angeben, indem Sie das ncadg_mq Transportprotokoll angeben, ohne das [message] -Attribut zu verwenden.
Durch Die Angabe von Messaging im asynchronen Modus ermöglicht das [message] -Attribut dem Client, den Remoteprozeduraufruf auszuführen und sofort zurückzugeben, auch wenn die Serveranwendung nicht reagiert. Wenn der Zielserver nicht verfügbar ist, wird der Aufruf gespeichert, bis der Server verfügbar wird.
Darüber hinaus können Sie mit Messaging im asynchronen Modus nachrichtenwarteschlangeneigenschaften der Empfangswarteschlange für den Server steuern. Weitere Informationen zur Auswahl von Dienstqualität, Anrufpriorität und Anrufdauer für den Serverprozess finden Sie unter RpcBindingSetOption .
Die folgenden Einschränkungen gelten auch für das [message] -Attribut:
- Microsoft Message Queuing muss in den Client- und Serversystemen implementiert werden, und die Systeme müssen füreinander sichtbar sein, je nach Dem Umfang der Nachrichtenwarteschlangeninstallation.
- Die Bindung muss bekannte Endpunkte und das ncadg_mq Transportprotokoll verwenden.
- Die Funktion darf keine Ausgabeparameter oder einen anderen Rückgabetyp als void enthalten. Beachten Sie, dass die letztere Einschränkung das Attribut [message] derzeit für COM-Schnittstellenmethoden (Object) ungeeignet macht. Mit der nächsten Version von MIDL können [Nachrichten] -Funktionen error_status_t oder HRESULT zurückgeben.
- Jede Schnittstelle, die mindestens einen [Message]- Aufruf enthält, muss registriert werden, indem RpcServerRegisterIf oder RpcServerRegisterIfEx aufgerufen wird, bevor RpcServerUseProtseqEpEx(ncadg_mq) aufgerufen wird. Andernfalls werden Aufrufe, die in der Warteschlange für den Server gewartet haben, gelesen, bevor die Schnittstelle registriert wird, und die Aufrufe schlagen fehl.
[message] void DisplayString(
[in, string] char * p1);
[message] void VarDataArray(
[in, size_is(iSize)] ARRAY_TYPE lpMyArray,
[in] int iSize,
[in] unsigned long ulChksum);