閱讀英文

共用方式為


message 屬性

[message]屬性工作表示遠端程序呼叫會被視為從用戶端到伺服器的訊息。

[message, optional-attribute-list] void function-name(
    [in, optional-parameter-attributes] param-name,. . .);

參數

optional-attribute-list

套用至函式的其他屬性。 只有 [local][nocode][code][optimize] 屬性可以搭配 [message] 屬性使用。

function-name

IDL 檔案中所定義的函式名稱。

optional-parameter-attributes

將套用至 參數的零個或多個 MIDL 屬性。

param-name

IDL 檔案中所定義的參數名稱。

備註

當來自用戶端的訊息時,具有 [message] 屬性的遠端程序呼叫會透過 ncadg_mq 訊息佇列傳輸以非同步方式傳遞至伺服器。 您可以指定 ncadg_mq 傳輸通訊協定而不使用 [message] 屬性來指出同步模式傳訊。

藉由指定非同步模式傳訊, [message] 屬性可讓用戶端進行遠端程序呼叫並立即傳回,即使伺服器應用程式沒有回應也一般。 如果目標伺服器無法使用,則會儲存呼叫,直到伺服器可用為止。

此外,非同步模式傳訊可讓您控制伺服器接收佇列的訊息佇列屬性。 如需選取服務品質、呼叫優先順序和伺服器進程的呼叫存留期的詳細資訊,請參閱 RpcBindingSetOption

下列限制也適用于 [message] 屬性:

  • Microsoft Message Queuing 必須在用戶端和伺服器系統中實作,而且系統必須彼此可見,如訊息佇列安裝的範圍所決定。
  • 系結必須使用已知的端點和 ncadg_mq 傳輸通訊協定。
  • 函式不能包含 void以外的輸出參數或傳回型別。 請注意,後者的限制讓 [message] 屬性不適用於 COM (物件) 介面方法。 下一版 MIDL 將允許 [message] 函式傳回error_status_t或 HRESULT。
  • 呼叫RpcServerRegisterIf 或 RpcServerRegisterIfEx,才能呼叫RpcServerUseProtseqEpEx (ncadg_mq) 來註冊至少包含一個[message]呼叫的任何介面。 否則,在註冊介面之前,將會讀取等候伺服器佇列的呼叫,而呼叫將會失敗。

範例

[message] void DisplayString(
    [in, string] char * p1);
 
[message] void VarDataArray(
    [in, size_is(iSize)] ARRAY_TYPE lpMyArray,
    [in] int iSize,
    [in] unsigned long ulChksum);

另請參閱

代碼

當地

ncadg_mq

nocode

優化

RPC 訊息佇列

RpcBindingSetOption

RpcBindingInqOption

無效