ITnef::ExtractProps
适用于:Outlook 2013 | Outlook 2016
从 TNEF 封装中提取属性。
HRESULT ExtractProps(
ULONG ulFlags,
LPSPropTagArray lpPropList,
LPSTnefProblemArray FAR * lpProblems
);
参数
ulFlags
[in]控制属性解码方式的标志的位掩码。 可以设置以下标志:
TNEF_PROP_EXCLUDE
解码 lpPropList 参数中未指定的所有属性。
TNEF_PROP_INCLUDE
解码 lpPropList 中指定的所有属性。
lpPropList
[in]指向要包含在解码操作中或从中排除的属性列表的指针。
lpProblems
[out]指向返回 的 STnefProblemArray 结构的指针的指针。 STnefProblemArray 结构指示未正确编码的属性(如果有)。 如果在 lpProblems 参数中传递 NULL,则不会返回任何属性问题数组。
返回值
S_OK
调用成功并返回了一个或多个预期值。
MAPI_E_CORRUPT_DATA
正在解码为流的数据已损坏。
备注
传输提供程序、消息存储提供程序和网关调用 ITnef::ExtractProps 方法以提取 (即从传递到 OpenTnefStream 函数的消息或附件的封装中解码) 属性。 调用提供程序或网关可以指定要解码的属性列表。 提供程序和网关还可以使用 ExtractProps 提供有关附件的任何特殊处理的信息。
ExtractProps 使用解码的属性填充传递到 OpenTnefStream 的原始消息。 后续 ExtractProps 调用将返回到消息并提取新的属性列表。
与 ITnef::AddProps 方法(在调用 ITnef::Finish 方法之前将请求的操作排入队列)不同, ExtractProps 方法在调用时会立即解码封装的属性。 因此,封装解码的目标消息应相对空。 目标消息中的现有属性被封装的属性覆盖。
ExtractProps 仅支持使用 OpenTnefStream 或 OpenTnefStreamEx 函数的 TNEF_DECODE 标志打开的对象。
TNEF 实现在不停止 ExtractProps 进程的情况下报告 TNEF 流编码问题。 lpProblems 中返回的 STnefProblemArray 结构指示无法处理哪些 TNEF 属性或 MAPI 属性(如果有)。 STnefProblemArray 中包含的 STnefProblem 结构之一的 scode 成员中返回的值指示特定问题。 提供程序或网关可以假定 ExtractProps 未返回问题报告的所有属性或属性都已成功处理。
注意
如果 MAPI 封装块中的属性无法处理,并在 TNEF 流解码期间使流不可靠,则封装块的解码将停止并报告问题。 此类问题的问题数组包含 ulPropTag 成员或 attAttachment
ulAttribute 成员attMAPIProps
的 0L,scode 成员包含MAPI_E_UNABLE_TO_COMPLETE。 请注意,流的解码不会停止,只是 MAPI 封装块的解码。 流解码将继续执行下一个属性块。
如果提供程序或网关不能处理有问题的数组,它可以在 lppProblems 中传递 NULL;在这种情况下,不会返回问题数组。
仅当调用返回S_OK时, lpProblems 中返回的值才有效。 返回S_OK时,提供程序或网关应检查 STnefProblemArray 结构中返回的值。 如果调用时出错,则 STnefProblemArray 结构不会填充,并且调用提供程序或网关不应使用或释放该结构。 如果调用时未发生错误,则调用提供程序或网关必须通过调用 MAPIFreeBuffer 函数释放 STnefProblemArray 结构的内存。
另请参阅
ITnef::AddProps
ITnef::Finish
ITnef::SetProps
MAPIFreeBuffer
OpenTnefStream
OpenTnefStreamEx
STnefProblemArray
ITnef : IUnknown