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 传输协议。
  • 该函数不能包含输出参数或 无效以外的返回类型。 请注意,后一个限制使 COM (对象) 接口方法不适用于 [message] 属性。 MIDL 的下一个版本将允许 [message] 函数返回error_status_t或 HRESULT。
  • 在调用 RpcServerUseProtseqEpEx (ncadg_mq) 之前,必须注册至少包含一个 [message] 调用的任何接口,方法是调用 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);

另请参阅

代码

当地

ncadg_mq

nocode

优化

RPC 消息队列

RpcBindingSetOption

RpcBindingInqOption

void