映射和映射签名

适用于:Outlook 2013 | Outlook 2016

当服务提供程序支持命名属性时,每组标识符和名称对都称为映射。 服务提供商可以支持一个或多个映射。 也就是说,例如,一个消息存储提供程序可以为其所有邮件、文件夹和邮件存储对象实现 GetIDsFromNamesGetNamesFromIDs 方法,以便处理名称及其相应标识符的单个列表。 另一个邮件存储提供程序可能为每个文件夹及其中包含的邮件提供一个列表,或者为每个邮件和每个文件夹实现唯一列表。 对每封邮件使用唯一映射的邮件存储提供程序不得允许命名属性出现在其文件夹内容表中,因为对于给定的属性名称,属性标识符将不同于邮件。 MAPI 建议提供程序保持简单,并为其所有对象(包括表)使用单个列表进行操作。

对于每个映射,服务提供商必须提供映射签名。 映射签名是一个二进制值(通常是 GUID),用于唯一标识一组属性标识符及其相应名称。 映射签名存储在对象的 PR_MAPPING_SIGNATURE (PidTagMappingSignature) 属性中。 每当对它所表示的映射进行更改时,服务提供商都必须更改其 PR_MAPPING_SIGNATURE 属性的值。 例如,如果为 名称 分配了新标识符或添加了新名称和标识符对,则必须更新PR_MAPPING_SIGNATURE。

使用对象的命名属性的客户端在比较和复制操作中使用对象的 PR_MAPPING_SIGNATURE 属性。 若要比较属于两个对象的命名属性标识符,不使用映射签名的客户端必须在这两个对象上调用 IMAPIProp::GetNamesFromID, 以检索每个标识符的名称。 使用对象的映射签名可能会使此调用变得不必要。 当两个对象对其 PR_MAPPING_SIGNATURE 属性具有相同的值时,它们使用相同的映射。 可以直接比较使用相同的映射的标识符。 实现 IMAPIProp::CopyToIMAPIProp::CopyProps 的服务提供商还可以利用对象的映射签名。 在对象之间复制命名属性时,当源对象和目标对象具有相同的映射签名时,服务提供程序可以避免转换步骤。

另请参阅

IMAPIProp : IUnknown

MAPI 命名属性