ADRLIST
适用于:Outlook 2013 | Outlook 2016
描述属于一个或多个收件人的零个或多个属性。
值 | 说明 |
---|---|
标头文件: |
Mapidefs.h |
相关宏: |
CbADRLIST、 CbNewADRLIST、 CbNewADRLIST |
typedef struct _ADRLIST
{
ULONG cEntries;
ADRENTRY aEntries[MAPI_DIM];
} ADRLIST, FAR *LPADRLIST;
Members
cEntries
由 aEntries 成员指定的数组中的条目计数。
aEntries
ADRENTRY 结构的数组,每个收件人都有一个结构。
备注
ADRLIST 结构包含一个或多个 ADRENTRY 结构,每个结构描述收件人的属性。 无法解析收件人。 这意味着它在其属性值数组中缺少条目标识符。 已解析的收件人意味着包含 PR_ENTRYID (PidTagEntryId) 属性。 通常,已解析的收件人还有一个电子邮件地址 , (PidTagEmailAddress) 属性PR_EMAIL_ADDRESS。 但是,不需要电子邮件地址。 例如,ADRLIST 结构用于描述传出邮件的收件人列表,并使用 MAPI 来显示通讯簿中的条目。
ADRLIST 结构类似于 SRowSet 结构,这些结构用于表示表中的行。 事实上,这两个结构设计为可以互换使用。 两者都包含一个结构数组,这些结构描述一组属性和数组中的值计数。 而在 ADRLIST 结构中,数组包含 ADRENTRY 结构,而在 SRowSet 结构中,数组包含 SRow 结构。 ADRENTRY 结构和 SRow 结构在布局上是相同的。 由于 ADRLIST 和 SRowSet 结构遵循相同的分配规则,因此从通讯簿容器的内容表中检索的 SRowSet 结构可以强制转换为 ADRLIST 结构并按原样使用。
下图显示了 ADRLIST 结构的布局。
ADRLIST 结构中的 ADRENTRY 和 SPropValue 部分必须独立于其他部分进行分配和释放。 也就是说,在释放 ADRENTRY 结构之前,分配并释放 ADRENTRY 结构的内存后,必须单独分配每个 SPropValue 结构。 这种处理内存的独立性允许从地址列表中自由添加或删除收件人和单个收件人属性。
MAPIAllocateBuffer 和 MAPIFreeBuffer 函数必须用于分配和释放 ADRLIST 结构及其所有部分。
如果收件人列表太大而无法容纳内存,客户端可以调用 IMessage::ModifyRecipients 方法来处理列表的子集。 在这种情况下,客户端不应使用通讯簿通用对话框。
有关如何为 ADRENTRY 结构分配内存的详细信息,请参阅 管理 ADRLIST 的内存和 SRowSet 结构。