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
-
パラメーターに適用される 0 個以上の MIDL 属性。
-
param-name
-
IDL ファイルで定義されているパラメーターの名前。
解説
クライアントからのメッセージとして、[ message] 属性を持つリモート プロシージャ 呼び出しは、 ncadg_mq メッセージ キュー トランスポート経由でサーバーに非同期的に配信されます。 [message] 属性を使用せずにncadg_mq トランスポート プロトコルを指定することで、同期モード メッセージングを指定できます。
非同期モード のメッセージングを指定することで 、[message] 属性を使用すると、サーバー アプリケーションが応答していない場合でも、クライアントはリモート プロシージャ呼び出しを行い、すぐに戻ることができます。 ターゲット サーバーが使用できない場合は、サーバーが使用可能になるまで呼び出しが格納されます。
さらに、非同期モード メッセージングを使用すると、サーバーの受信キューのメッセージ キュー プロパティを制御できます。 サーバー プロセスのサービス品質、呼び出し優先度、呼び出しの有効期間の選択の詳細については、「 RpcBindingSetOption」 を参照してください。
[message] 属性には、次の制限も適用されます。
- Microsoft メッセージ キューは、クライアント システムとサーバー システムに実装する必要があり、メッセージ キューのインストールのスコープによって決定されるシステムが相互に表示されている必要があります。
- バインディングでは、既知のエンドポイントと ncadg_mq トランスポート プロトコルを使用する必要があります。
- 関数には、出力パラメーターまたは void 以外の戻り値の型を含めることはできません。 後者の制限により、[ message] 属性は、現時点では COM (オブジェクト) インターフェイス メソッドに適さないことに注意してください。 MIDL の次のリリースでは 、[message] 関数がerror_status_tまたは HRESULT を返すようになります。
- RpcServerUseProtseqEpEx(ncadg_mq) を呼び出す前に、少なくとも 1 つの [メッセージ] 呼び出しを含むインターフェイスを RpcServerRegisterIf または RpcServerRegisterIfEx を呼び出して登録する必要があります。 それ以外の場合、サーバーのキューで待機していた呼び出しは、インターフェイスが登録される前に読み取られ、呼び出しは失敗します。
例
[message] void DisplayString(
[in, string] char * p1);
[message] void VarDataArray(
[in, size_is(iSize)] ARRAY_TYPE lpMyArray,
[in] int iSize,
[in] unsigned long ulChksum);
関連項目