为 MAPI-MIME 转换创建 IDL

Posted

技术标签:

【中文标题】为 MAPI-MIME 转换创建 IDL【英文标题】:Creating IDL for MAPI-MIME conversion 【发布时间】:2010-09-11 06:40:29 【问题描述】:

我正在尝试为 IConverterSession 接口创建 IDL,但我对 MIMETOMAPI 方法的定义感到困惑。它将 LPMESSAGE pmsg 参数指定为 [out],但 cmets 声明其指向要加载的 MAPI 消息的指针。

我不清楚这些函数是否分配了 MAPI 消息对象并设置了指针,在这种情况下它不应该是指向 MESSAGE 指针的指针吗?或者调用代码是否应该已经实例化了消息对象,在这种情况下为什么标记为 [out] 而不是 [in]?

这个接口实际上是从 VB6 代码中使用的,所以它必须是 [in] 或 [in, out] 但我确实需要知道是否在我使用的 IDL 中:-

[in] IMessage pmsg* 

[in, out] IMessage pmsg**

【问题讨论】:

【参考方案1】:

我认为在这种情况下,当文档将参数标记为 [out] 时会产生误导。您必须将有效的 LPMESSAGE 传递给该方法,这就是为什么不是双指针的原因。所以我会在你的 idl 定义中使用 [in]。

【讨论】:

github.com/MicrosoftDocs/office-developer-client-docs/issues/67 现已移至github.com/OfficeDev/outlook-dev-docs/issues/688 看起来他们正在实施修复:github.com/MicrosoftDocs/office-developer-client-docs/pull/206/… 和 github.com/MicrosoftDocs/office-developer-client-docs/pull/206【参考方案2】:

请参阅 MFCMapi 源 (http://mfcmapi.codeplex.com/) 中的 MAPIMime.h 作为权威来源。

【讨论】:

【参考方案3】:

可以在此处找到正确的文档:https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/iconvertersession-mimetomapi。调用者必须提供一条消息供 API 填写,因此对象必须进入 [in]。

【讨论】:

以上是关于为 MAPI-MIME 转换创建 IDL的主要内容,如果未能解决你的问题,请参考以下文章

将 rmi 接口转换为 CORBA .idl

将netcdf数据最终转换为envi的标准格式或者tif格式。用matlab或者idl可以吗?

从 Java 源文件生成 CORBA IDL?

从 corba 转换为 slice

CORBA IDL 到 C++ - 字符与无符号字符?

protobuf(Protocol Buffers).proto文件中的IDL(Interface Definition Language 接口定义语言)是什么?