ITnef::Finish

适用于:Outlook 2013 | Outlook 2016

完成所有 Transport-Neutral 封装格式 (TNEF) 排队和等待的操作的处理。

HRESULT Finish(
  ULONG ulFlags,
  WORD FAR * lpKey,
  LPSTnefProblemArray FAR * lpProblem
);

参数

ulFlags

[in]保留;必须为零。

lpKey

[out]指向 PR_ATTACH_NUM (PidTagAttachNumber 的指针,) 附件的键属性。 TNEF 封装对象使用此键将附件与邮件中的附件放置标记匹配。 此键应对每个附件是唯一的。

lpProblem

[out]指向返回 的 STnefProblemArray 结构的指针的指针。 STnefProblemArray 结构指示未正确编码的属性(如果有)。 如果在 lpProblem 参数中传递 NULL,则不会返回任何属性问题数组。

返回值

S_OK

调用成功并返回了一个或多个预期值。

备注

传输提供程序、消息存储提供程序和网关调用 ITnef::Finish 方法,以在调用 ITnef::AddProps 和 ITnef:SetProps 方法时为其请求编码的所有属性执行编码。 如果使用 OpenTnefStream 或 OpenTnefStreamEx 函数的 TNEF_ENCODE 标志打开 TNEF 对象, 则 Finish 方法会将请求的属性编码为传递给该对象的封装流。 如果使用 TNEF_DECODE 标志打开 TNEF 对象, Finish 方法将从 TNEF 流中解码属性,并将其写回到它们所属的消息。

完成调用后,指向封装流的指针指向 TNEF 数据的末尾。 如果提供程序或网关需要在 Finish 调用后使用 TNEF 流数据,则必须重置指向 TNEF 流数据开头的流指针。

TNEF 实现在不停止 Finish 进程的情况下报告 TNEF 流编码问题。 lpProblem 参数中返回的 STnefProblemArray 结构指示无法处理哪些 TNEF 属性或 MAPI 属性(如果有)。 STnefProblemArray 中包含的 STnefProblem 结构之一的 scode 成员中返回的值指示特定问题。 提供程序或网关可以假定 Finish 未返回问题报告的所有属性或属性都已成功处理。

如果提供程序或网关不能处理有问题的数组,它可以在 lpProblem 中传递 NULL;在这种情况下,不会返回问题数组。

仅当调用返回S_OK时, lpProblem 中返回的值才有效。 返回S_OK时,提供程序或网关应检查 STnefProblemArray 结构中返回的值。 如果调用时出错,则 STnefProblemArray 结构不会填充,并且调用提供程序或网关不应使用或释放该结构。 如果调用时未发生错误,则调用提供程序或网关必须通过调用 MAPIFreeBuffer 函数释放 STnefProblemArray 的内存。

MFCMAPI 引用

有关 MFCMAPI 示例代码,请参阅下表。

文件 函数 Comment
File.cpp
SaveToTNEF
MFCMAPI 使用 ITnef::Finish 方法完成新 TNEF 流的处理。

另请参阅

ITnef::AddProps

MAPIFreeBuffer

OpenTnefStream

OpenTnefStreamEx

PidTagAttachNumber 规范属性

STnefProblemArray

ITnef : IUnknown

MFCMAPI 代码示例