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 消息队列必须在客户端和服务器系统中实现,并且系统必须彼此可见,由消息队列安装范围确定。
  • 绑定必须使用已知的终结点和 ncadg_mq 传输协议。
  • 函数不能包含 除 void 以外的输出参数或返回类型。 请注意,后一个限制使 [message] 属性目前不适用于 COM (对象) 接口方法。 下一版本的 MIDL 将允许 [message] 函数返回error_status_t或 HRESULT。
  • 在调用 RpcServerUseProtseqEpEx (ncadg_mq) 之前,必须通过调用 RpcServerRegisterIfRpcServerRegisterIfEx 来注册包含至少一个 [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

无效