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);